支持本机“共享通过”功能的React Native(或替代)

时间:2019-03-18 13:17:45

标签: android ios react-native

我需要创建一个包装器应用程序。基本上,它只是指向我们在线托管的React应用的Webview。它必须同时构建到iOS和Android。因此,我考虑过使用纯本机反应。

最重要的功能是,该应用必须在设备上注册为可以使用本机“共享”功能处理链接的应用。

示例;如果我在chrome / safari /中进行任何google搜索,只要我能按住任何链接(搜索结果),我都可以单击“共享”,这通常会打开一个菜单,例如可以共享; “ drive”,“ gmail”,“ messenger”,“ sms”等。我希望包装器应用程序显示在菜单中并能够处理链接。

我试图搜索使这一点成为可能的库/框架。但是我得到的所有搜索结果似乎都是关于如何做相反事情的解释,从应用程序内部打开本机共享菜单。

我一直在寻找expo,但是无法弄清楚他们是否支持此功能,否则我会考虑基于react-native的create-react-native-app,但我也找不到直接的文档有关如何实现这种功能的说明。

此外,我知道有一个统一的插件可以做到这一点,并且我可以将其与处理包装应用程序部分的uniWebView结合使用。

如何在构建为iOS和Android的简单包装应用程序上实现本机共享?

1 个答案:

答案 0 :(得分:0)

您将无法在Android本机上执行此操作,因为它不是本机代码的一部分。它是清单的一部分。您需要按照https://developer.android.com/training/sharing/receive上的说明进行操作,并在清单中设置一个意图过滤器,以告诉操作系统您的应用处理正确的mime类型以及将其发送到哪个活动。然后,该活动将不得不直接或通过发送其响应本机的数据来处理传入的数据(这至少会产生轻微的痛苦,当您希望它显示一个孤立的视图或希望它调用一个RN时,RN是可以的本机模块,调用RN代码不是很容易)。这并不意味着您的应用程序不能使用本机反应,而是需要修改其创建的默认清单。

如果这是您应用程序的主要用例,而您的应用程序仅占显示网页的90%,那么您可能会更轻松地处理一些事情,即不使用react native而是仅显示Web视图。 (我会把我对RN的偏见留给门外的所有事情一个可怕的解决方案。)