如何在分享表建议中显示React Native App?

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

我想在我的 React Native 应用程序中使用

Share
功能,但有一个例外,我不想共享我的应用程序中的内容,我想将另一个应用程序中的内容共享到我的应用程序,怎么可能在共享表建议中显示我的应用程序并处理共享数据?

react-native share ios-sharesheet android-sharesheet
3个回答
5
投票
不幸的是,将您自己的共享扩展 (iOS) 或共享意图 (Android) 添加到 React Native 应用程序有点棘手。例如,在 iOS 上,这需要设置一个完整的应用程序扩展,包括一些本机代码,这些代码通常最终与 React Native 应用程序的其余部分非常脱钩。

有关本机部分的 Android 文档,请参阅

此处,iOS 文档请参阅

有一些第三方库,例如

react-native-share-extension,可以使这变得更容易,尽管它仍然需要一些设置。如果您使用 Expo,由于 iOS 上所需的应用程序扩展,所有解决方案最终都可能会出现问题,甚至使用 Expo 配置插件进行设置可能会很复杂(尽管这可能是可能的!)。

您可能面临的另一个问题是,至少在 iOS 上,对于 React Native 应用程序来说,共享扩展可以使用的内存量非常有限。即使是非常基本的扩展也可能会因内存不足信号而被操作系统终止。规避此问题的一种相对简单的方法(仍然需要大量本机代码)可能是在有人单击您的共享扩展时简单地链接到您的应用程序,而不是为 iOS 扩展的模式添加实际的本机 UI(这需要更多记忆)。

这是一篇 Medium 文章,其中有人已经完成了此操作(并面临相同的问题)。


2
投票
我使用这个包来实现ios和android的共享扩展。

https://github.com/meedan/react-native-share-menu


0
投票
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); }
};

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