分享不工作反应原生android / ios?

问题描述 投票:1回答:3

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

javascript reactjs react-native
3个回答
4
投票

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

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


1
投票

你必须为此承诺...

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

0
投票

阅读friendly share() docs

Content

  • message - 要分享的信息
  • title - 消息的标题

iOS

  • url - 要分享的URL

至少需要URL和消息之一。

所以在Android上,url选项什么都不做,你可能需要将它放入message

© www.soinside.com 2019 - 2024. All rights reserved.