首页 > 解决方案 > 支持本机“共享方式”功能的 React Native(或替代)

问题描述

我需要创建一个包装应用程序。基本上它只是一个指向我们在线托管反应应用程序的 web 视图。它必须同时适用于 iOS 和 Android。因此我考虑过使用普通的 react native。

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

例子; 如果我在 chrome/safari/任何我能够按住任何链接(搜索结果)中进行谷歌搜索,然后我可以单击“共享”,这通常会打开一个菜单,让我们说共享到;“drive”、“gmail”、“messenger”、“sms”......等等。我希望我们的包装应用程序显示在菜单中并能够处理链接。

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

我一直在看博览会,但不知道他们是否支持此功能,否则我会考虑基于 react-native 的 create-react-native-app,但我也无法找到有关如何的直接文档实现这样的功能。

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

如何在构建到 iOS 和 Android 的简单包装应用程序上实现原生共享?

标签: androidiosreact-native

解决方案


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

如果这是您的应用程序的主要用例,并且您的应用程序 90% 仅显示您的网页,那么您可能会更轻松地处理不使用 react native 并仅显示 Web 视图的事情。(我将保留我对 RN 的偏见,只是在这里门口的所有事情都是一个可怕的解决方案)。


推荐阅读