共享无法在React Native Android / iOS中工作?

时间:2018-10-29 12:21:34

标签: javascript reactjs react-native

我如何共享将在React本机移动应用程序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)时,该怎么办?我想念什么吗?

enter image description here

5 个答案:

答案 0 :(得分:4)

  

Share.share(内容,选项)分别接收内容和选项参数。

     

Share.share(content,options)在Android和Android上均返回Promise   iOS。您基本上需要解决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

答案 1 :(得分:1)

您必须履行承诺..

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

答案 2 :(得分:0)

阅读friendly share() docs

  

内容

     
      
  • message-共享消息

  •   
  • title-消息标题

  •   
     

iOS

     
      
  • url-要共享的URL
  •   
     

至少需要URL和消息之一。

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

答案 3 :(得分:0)

喜欢在WhatsApp上共享文本

  

Linking.openURL(whatsapp://send?text=${'hello whatsApp'});

喜欢在Google上共享文本

  

Linking.openURL('https://support.google.com/mail/community');

在React Native App中打开您的联系人

  

Linking.openURL('content://com.android.contacts/contacts');

答案 4 :(得分:0)

这对我有用:Link

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: []
        })
    }