当在Safari浏览器上单击以下链接时,我需要打开我的特定UIViewController:
在浏览器上单击此链接时,我需要在特定屏幕上打开我的应用程序并从此URL检索数据。例如:
id = 24
token = 8fbf662617d14c10f4a11f716c1b2285
...并将其传递给特定的UIViewController。
我该怎么做?
答案 0 :(得分:3)
您所描述的内容称为深层链接。它是一个非常常见的应用程序功能 - 大多数应用程序都有它 - 从概念上讲,它似乎很容易构建。然而,要做到这一点很复杂,并且存在许多边缘情况。
你基本上需要完成两件事:
虽然不是,你也可能想跟踪所有这些活动,这样你就可以看到什么在起作用。
您现有的自定义URI方案适合此类别。但是,Apple已经决定自定义URI方案不是一项好技术,并且在iOS 9中弃用它们而不是Universal Links。
苹果对此是正确的。自定义URI方案存在许多问题,但这些问题最大:要解决这些问题,过去可以使用常规http://
链接,然后在目标网页上插入重定向,以将用户转发到自定义URI方案,从而打开应用。如果重定向失败,则可以无缝地将用户重定向到App Store。这是Apple在iOS 9中打破部分以推动Universal Links的采用。
Universal Links是一种更好的用户体验,因为它们默认为http://
个链接,可避免出现令人讨厌的错误。但是,它们很难设置still don't work everywhere。
为了确保用户在安装应用时最终进入应用内部,您需要同时支持Universal Links和自定义URI方案,即使这样,也会有很多边缘情况,例如Facebook和{{ 3}}需要特殊处理。
在这种情况下,用户将以http://
后备网址结束。此时,您有两个选择:
大多数大品牌更喜欢第二种选择。较小的应用程序通常采用第一种方法,特别是如果他们没有网站。
要将用户转发到App Store,您可以使用如下的Javascript重定向:
<script type="text/javascript">
window.onload = function() {
window.location = "https://itunes.apple.com/app/id1121012049";
};
</script>
直到最近,才有可能使用HTTP重定向来提高速度,但是smart banner,所以这不再有效。
不幸的是,在iOS或Android上没有本地方法可以完成最后这篇文章。要使其工作,您需要一个远程服务器来关闭循环。你可以Apple changed some behavior in Safari with iOS 10.3,但你真的不应该出于很多原因,其中最重要的是你有更重要的事情要做。
深度链接非常复杂。今天的大多数应用都没有尝试通过构建内部系统进行设置。免费托管的深层链接服务,例如build this yourself(完全披露:他们与我们合作非常棒)和Firebase动态链接可以为您处理所有这些,并确保您始终了解最新信息标准和边缘案例。
有关视频概述的信息,请参阅Branch.io。分行的员工制作了您需要了解的所有内容。