我正在使用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()选项。
基本上,我想知道用户是取消共享还是跟进。
谢谢!
答案 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');
});