我想在我的 React Native 应用程序中使用
Share
功能,但有一个例外,我不想共享我的应用程序中的内容,我想将另一个应用程序中的内容共享到我的应用程序,怎么可能在共享表建议中显示我的应用程序并处理共享数据?
有关本机部分的 Android 文档,请参阅有一些第三方库,例如
react-native-share-extension,可以使这变得更容易,尽管它仍然需要一些设置。如果您使用 Expo,由于 iOS 上所需的应用程序扩展,所有解决方案最终都可能会出现问题,甚至使用 Expo 配置插件进行设置可能会很复杂(尽管这可能是可能的!)。
您可能面临的另一个问题是,至少在 iOS 上,对于 React Native 应用程序来说,共享扩展可以使用的内存量非常有限。即使是非常基本的扩展也可能会因内存不足信号而被操作系统终止。规避此问题的一种相对简单的方法(仍然需要大量本机代码)可能是在有人单击您的共享扩展时简单地链接到您的应用程序,而不是为 iOS 扩展的模式添加实际的本机 UI(这需要更多记忆)。这是一篇 Medium 文章,其中有人已经完成了此操作(并面临相同的问题)。
const handleShare = async () => {
try {
const result = await Share.share({
message: `${item.title}\n\n${removeHtmlTags(
item.description
)}\n\nRead more here: ${item.urlToImage} ${item.url}`,
});
if (result.action === Share.sharedAction) {
if (result.activityType) {
// Shared with specific activity (e.g., shared to a specific app)
} else {
// Shared without specifying any activity
}
} else if (result.action === Share.dismissedAction) {
// Dismissed the share dialog
}
} catch (error) {
console.error("Error sharing the post: ", error);
}
};