分享在本机 android/ios 中不起作用?

IT技术 javascript reactjs react-native
2021-05-10 17:45:02

如何共享将在 React Native 移动应用程序 Web 浏览器中打开的 pdf 文件链接或图像链接。我添加了一个共享按钮,但是当用户点击它时,它会打开共享菜单选项的位置,如 WhatsApp、Gmail、消息等。但是当点击 WhatsApp 时,它不会发送任何内容,为什么会这样?我是否需要在我的本机 Android 应用程序中使用 Gmail、WhatsApp API

代码:

import {
  Text,
  View,
  StyleSheet,
  Button,
  Animated,
  Dimensions,
  ScrollView,
  Image,
  TouchableOpacity,
  Linking,
  Platform,
  Share
} from 'react-native';


// inside render

onSharePress = (shareOptions) => Share.share(shareOptions);

const shareOptions = {
   title: 'Download Brochure',
    url: brochure
}

// inside return 

<View style={{paddingLeft: 10, marginRight: 20, flex: 1, flexDirection: 'row', justifyContent: 'flex-end'}}>
    <TouchableOpacity onPress={() => this.onSharePress(shareOptions)}>
         <Icon style={{paddingLeft: 10}} name="md-share" size={25} color="black"/>
     </TouchableOpacity>
</View>

在下面的屏幕截图中,您可以看到它只是打开了共享选项菜单,但是当我单击某些平台时,未发送内容,即文件的 URL,我该怎么做?我错过了什么吗?

在此处输入图片说明

4个回答

Share.share(content, options) 分别接收 content 和 options 参数。

Share.share(content, options) 在 Android 和 IOS 上都返回一个 Promise。您基本上需要解析 Promise 或从中读取响应。

像这样

Share.share(
{
  message: 'Your message',
  url: YourURL
}
).then(({action, activityType}) => {
if(action === Share.sharedAction)
  console.log('Share was successful');
else
  console.log('Share was dismissed');
});

Promise 返回一个包含action、activityType的对象

如果用户关闭对话框,则 Promise 将通过操作Share.dismissedAction解决,否则操作为 Share.sharedAction

阅读友好的share()文档

内容

  • message - 要分享的消息

  • title - 消息的标题

IOS

  • url - 要共享的 URL

至少需要 URL 和消息之一。

因此,在 Android 上,该url选项什么也不做,您可能需要将其放入message.

你必须处理这个Promise..

 onSharePress = (url) => {
    Share.share({
      title: 'Alert Title',
      message: url + '\nMessage goes here.'
    }).then((res) => console.log(res))
      .catch((error) => console.log(error))
  };

这对我有用:链接

shareApp = () =>{

        let  text = 'Want more buzz around your photos on Insta, Facebook, Twitter, Whatsapp posts?\n\nLet\'s make your stories get more eyeballs..\nDownload TagWag App '
        if(Platform.OS === 'android')
            text = text.concat('https://hackeruna.com')
        else
            text = text.concat('http://itunes.apple.com/app/id1453977874')

        Share.share({
            subject: 'Download TagWag App Now',
            title: 'Download TagWag App Now',
            message: text,
            url:'app://tagwag',

        }, {
            // Android only:
            dialogTitle: 'Share TagWag App',
            // iOS only:
            excludedActivityTypes: []
        })
    }