【问题标题】:iOS custom URL schemes vs. Universal Links and Android counterpartiOS 自定义 URL 方案与通用链接和 Android 对应方案
【发布时间】:2015-11-14 20:08:57
【问题描述】:

我正在寻找一种功能,当用户收到一条消息时——比如通过 WhatsApp 应用程序——包含以特定方案(前缀)开头的链接,当用户点击该链接时,我的应用程序将被调用。

我知道这个功能已经作为“自定义 URL 方案”提供,但我现在也注意到通用链接也有类似的东西。那么,“自定义 URL 方案”有什么问题吗?我不想使用通用链接,因为我不希望我的应用仅限于 iOS 9。

此外,Android 似乎也有这个客户 URL 的功能,但是在最新的 Android 6.0 版本上,提到here 他们还有“App Links”功能,该功能仅适用于 Android 6.0。那么,再次,两者之间有什么区别?

我不想限制我的应用只能在 iOS9 或 Android 9 上运行。所以我想目前传统的“自定义 URL 方案”对我来说更有吸引力。

另外,我想确保“自定义 URL 方案”在用户点击 WhatsApp 上的链接时有效,或者只有在网络浏览器或邮件上的链接时才有效。

【问题讨论】:

  • 如果你以前不这样做,我也会问同样的问题。 ;) 特别是我对 URL-schemes 和 App-Links (据我所知以 http 为前缀)的区别感兴趣,这是事实的一部分,即 URL-schemes 可能无法在浏览器中打开,因为它们是仅设计应用程序。对吗?
  • 这个自定义 URLS / Universal Links / App Links 是我很长一段时间以来偶然发现的最棘手、最丑陋、最经常变化的东西。已经挖掘了几个月,但我仍然没有得到区别,显然我无法让它们中的任何一个正常工作:-(

标签: android ios ios9 url-scheme ios-universal-links


【解决方案1】:

具有自定义方案的 URL 在许多 Android 应用程序(SMS、电子邮件、WhatsApp、环聊等)中不会显示为链接,这实际上使您的应用程序无法打开它们。然而,iOS 不允许定义方案 + 主机 + 路径 like android does

对此的一个可能(hacky)解决方案是浏览器嗅探(我知道,邪恶,但是对明确定义的行为的非标准扩展也是如此,特别是如果首先没有破坏)在您通过可通过 HTTP 访问的 URL。

您可以检查请求是否来自您为其提供本机应用程序的 iOS 平台;那么您必须确保设备安装了您的应用程序(这越来越丑陋;请参阅here for example),然后才重定向到yourapp://the-rest-of-your/uri,这会导致向用户显示他们是否想要的提示是否打开应用程序内的地址。 (在带有 iOS 8、Safari 浏览器的 iPhone 4 上测试。)

【讨论】:

    最近更新 更多