4

我需要从我的 react native 移动应用程序中打开一个第三方应用程序。我知道这在 iOS 上称为通用链接,在 Android 上称为 AppLink。

我为此做了很多研究,我已经能够在应用商店中设置第三方应用的链接。现在,如果用户安装了应用程序,我只需要让我的应用程序打开该应用程序。不过,这需要其他应用程序的 URI 方案。

我的问题是,如何获取此第三方应用程序的 URI 方案?相反,我如何获取任何应用程序的 URI 方案?我知道 twitter 应用程序的 URI 方案是“twitter://app”,但我试图链接到的应用程序比 twitter 或其他流行应用程序更小众,所以在线上这类事情没有帮助。

有小费吗?

4

2 回答 2

8

查找 iOS 应用的 URL 方案

由于 Apple 倾向于保密,因此很难找到 iOS 应用程序的 URL 方案。但这是可以完成的。下面是我使用名为iMazing的 Mac 应用程序的方法。

  1. 启动 iMazing,选择已连接的 iOS 设备,单击应用程序

在此处输入图像描述

  1. 在窗口的页脚中,单击Manage Apps

在此处输入图像描述

  1. 选择您感兴趣的应用程序,然后选择导出 .IPA菜单项。注意:您可能需要先下载该应用程序。

在此处输入图像描述

  1. 保存的文件将具有.ipa扩展名。将扩展名更改为.zip,然后解压缩文件。您现在有一个名称与应用程序名称匹配的目录。

  2. 假设“ asana ”是应用程序名称,在文本编辑器中打开文件“ asana/Payload/asana.app/Info.plist ”,然后搜索包含“ CFBundleURLSchemes ”的部分。假设应用程序包含CFBundleURLSchemes(它们是可选的),它应该看起来像这样:

在此处输入图像描述

  1. URL 方案位于 中<string>asana</string>,因此本例中完整的 url 方案是“ asana:// ”。通过在 iOS Safari 浏览器窗口中键入 URL 来测试该 URL 是否会启动应用程序。如果有效,Safari 应该会显示如下警告:

在此处输入图像描述


没有 CFBundleURLSchemes 的应用程序会怎样?

我还没有找到直接在没有CFBundleURLSchemes的情况下启动应用程序的方法,但是您可以链接到 App Store 中的应用程序页面,用户可以在其中使用“打开”按钮(或“获取”按钮,如果未安装应用程序)打开应用程序。

您需要从 App Store 获取应用页面的 URL:

  1. 打开App Store,进入应用页面,点击分享图标:

App Store Asana 应用页面

  1. 点击复制链接

应用商店复制链接

URL 将如下所示:

https://apps.apple.com/us/app/asana-organize-tasks-work/id489969512

在 Safari 中单击该链接将在 App Store 中打开应用程序页面。

于 2019-05-29T20:05:20.413 回答
2

也许值得从一些背景开始:有多种方法可以深度链接到应用程序,这取决于平台(iOS\Android\WindowsPhone...)及其版本。

在 iOS 上,直到版本 9,打开应用程序的方式是使用 URI 方案,例如您在上面添加的那个:twitter://app. 每个应用程序都声明应该使用的方案。因此,为了深入链接到您希望打开的应用程序,您需要使用它声明的方案。在版本 6 之前,这对于 Android 来说是相同的。

从 iOS9+ 开始,Apple 引入了 Universal Links 作为深度链接的方法。这里有一些信息:https ://developer.apple.com/ios/universal-links/

在这些版本中,如果未安装应用程序,则在使用 Safari 浏览器(这是 iOS 默认浏览器)时,URI 方案将不再起作用。但是,如果安装了应用程序,则 URI 方案应该允许打开应用程序,前提是一切都配置成功。在 Android 中有一个类似的方法叫做“AppLinks”。

话虽如此,以上信息用于为您的应用设置深层链接。我认为从您的应用程序打开第三方应用程序不是一个常见的用例 - 应用程序所有者配置和使用深层链接(例如,用于发布他\她的应用程序以吸引用户)。

于 2019-05-29T16:03:34.337 回答