如何知道用户何时解散React Native中的共享选项

时间:2017-09-16 22:54:29

标签: react-native

我正在使用RN的Share API功能构建一个包含Expo的应用。我已成功实现以下内容以共享图像:

Share.share(
{
  message: 'This is a message',
  url: FileSystem.documentDirectory + imageUrlDate
},
{
  dialogTitle: 'Share Today',
  excludedActivityTypes: [
    'com.apple.mobilenotes.SharingExtension',
    'com.apple.reminders.RemindersEditorExtension'
  ]
}

);

我想知道的是如何使用sharedAction()dismissedAction()选项。

基本上,我想知道用户是取消共享还是跟进。

谢谢!

2 个答案:

答案 0 :(得分:4)

正如您可以从docs中读取的那样,Share.share()会返回Promise,如果用户共享或取消该对话框,则返回操作会显示。被解雇的行动仅适用于iOS ,因此如果您的实施需要,您可能需要编写platform specific code

  

在iOS 中,返回一个Promise,它将调用一个包含的对象   action,activityType。如果用户解除了对话框,则为Promise   将仍然通过Share.dismissedAction和所有操作解决   其他键未定义。

     

在Android中,返回一个始终通过操作解决的Promise   Share.sharedAction。

所以你可以这样做,

Share.share({ message: 'This is a message', url: FileSystem.documentDirectory + imageUrlDate },
{
  dialogTitle: 'Share Today',
  excludedActivityTypes: [
    'com.apple.mobilenotes.SharingExtension',
    'com.apple.reminders.RemindersEditorExtension'
  ]
}).then(({action, activityType}) => {
  if(action === Share.dismissedAction) console.log('Share dismissed');
  else console.log('Share successful');
});

答案 1 :(得分:0)

bennygenels答案大多是正确的,但是share()返回一个resolves as an object的Promise,所以我们需要一些额外的花括号{}来使它真正起作用:

Share.share({ message: 'This is a message', url: FileSystem.documentDirectory + imageUrlDate },
{
  dialogTitle: 'Share Today',
  excludedActivityTypes: [
    'com.apple.mobilenotes.SharingExtension',
    'com.apple.reminders.RemindersEditorExtension'
  ]
}).then(({action, activityType}) => {
  if(action === Share.dismissedAction) console.log('Share dismissed');
  else console.log('Share successful');
});