如何获取任何应用程序的 URI 方案以进行 AppLinks/universal 链接?

How to get the URI scheme of any app for AppLinks/universal linking?

我需要从我的 React 本机移动应用程序打开第三方应用程序。我知道这在 iOS 上称为通用 linking,在 Android 上称为 AppLink。

我为此做了很多研究,我已经能够在应用商店上设置一个link到第三方应用程序。现在,如果用户安装了应用程序,我只需要让我的应用程序打开它即可。不过,这需要其他应用程序的 URI 方案。

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

有什么建议吗?

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

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

都是一样的

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

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

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

找到 iOS 应用程序的 URL 方案

由于 Apple 的保密倾向,要找到 iOS 应用程序的 URL 方案并不容易。但这是可以完成的。这是我的操作方法,使用名为 iMazing.

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

  1. 在 window 的页脚中,单击 管理应用程序

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

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

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

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


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

我还没有找到不用 CFBundleURLSchemes 直接启动应用程序的方法,但是您可以 link 到应用程序中的应用程序页面商店,用户可以在其中使用 Open 按钮(如果未安装应用程序,则使用 Get 按钮)打开应用程序。

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

  1. 打开 App Store,转到应用程序页面,单击 分享 图标:

  1. 点击复制Link:

URL 将如下所示:

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

在 Safari 中单击 link 将打开 App Store 中的应用程序页面。