在移动设备中,不同的应用能否响应浏览器号召性用语并直接打开?



我想设计一个跨平台协议,移动设备上的任何应用程序或桌面上的应用程序都可以响应。

在桌面上,最好的例子是种子,其中您有一个表单magnet:?urn:btih:abcabcabcabcabcabcabcabc等的磁力链接,可以通过任何支持magnet:方案的应用程序打开。还存在.torrent文件,这些文件可以通过任何支持.torrents的东西打开(尽管这不会直接打开(。

在移动设备上可以这样的事情吗?从我最初的研究来看,iOS似乎不允许多个应用程序注册相同的uri方案customuniversalscheme://因此无法正常工作。我还隐约记得移动野生动物园在浏览器中打开文件,而不是在单独的应用程序中打开文件,甚至无法下载文件,但我不再确定这一点了......

安卓呢?多个应用可以响应相同的自定义方案吗?文件可以在安卓上下载,但文件可以直接在浏览器中打开吗?

我正在考虑的用户流在移动设备上是否可行?如果是这样,如何?如果没有,下一个最佳选择是什么?

所以我认为你与桌面洪流的比较有点错误。在桌面上,您可以选择默认应用程序来打开文件,也可以"打开方式"所需的应用程序,在移动设备上,它有点不同且更复杂。

因此,主要是在移动平台上,您打开带有深层链接的应用程序,而iOS有两种深层链接方式:

  • 您在上面定义的旧的和众所周知的 URL 方案
  • 通用链接,这个被大量使用(iOS 9及更高版本(来转发一个链接,该链接通常会在浏览器中打开,转发到响应通用链接的应用程序(它与URL方案非常相似(

对于 Android,您可以使用intent-filters进行类似的操作,据我所知,可以有多个响应同一深层链接的应用程序,但是如果我没记错的话,系统会提示用户使用应用程序选择器(选择要使用的应用程序(。

现在这是一个关于深度链接的简短摘要,但根据我的经验,深度链接的主要问题是你如何创建它们,这是关于必须"转发"它们的应用程序。例如,在Android上,有很多网络浏览器(不是chrome(不会将深层链接转发到系统,以检查是否有可以打开它们的应用程序。

现在,如果你能解决这个问题,我认为你可以做的是统一两个平台的实现,将你的框架/库/应用程序链接到一个 API,该 API 将为每个应用程序生成一个独特的深度链接方案。例如,我想"响应"您的深层链接,所以我在您的平台上注册我的应用程序,使用捆绑 ID 和包名称(这是唯一的(,您的系统将生成包名称/捆绑 ID 和其他数字的唯一组合。当您的 lib/app/framework 启动时,您将获取所有已配置的捆绑包,并尝试为每个捆绑包触发深层链接,这种方法受到已注册应用程序数量的限制。

最新更新