Universal Link踩坑与研究

更新 18.02.27

Universal Link也被微信封堵了。见味精大神的 blog: juejin.im/post/5a5371…


Universal link 简介

Apple官方文档链接:developer.apple.com/library/con…

通用链接是苹果于iOS9时推出的一种无缝跳转技术。

官方介绍如下:

“当您支持通用链接时,iOS用户可以点击链接到您的网站,并无缝地重定向到已安装的应用程序,而无需通过Safari。如果您的应用未安装,点击链接到您的网站在Safari中打开您的网站。

相比之前的custom URL schemes方式,通用链接有以下优点:

独有.不像 custom URL schemes, 通用链接不会被别的应用声明, 因为他们用标准HTTP或HTTPS链接至您的网站.

安全.当用户安装你的应用时,iOS系统会校验你上传至网站的文件以确保您的网站允许您的应用程序代表其打开URLs,只有你能创建和上传这个文件,所以网站与应用之间的关联是安全的.

灵活.如果您的应用没有安装,通用链接亦会正常运转.当应用没有安装,将会如用户所期望的在safari中打开.

简单.一个URL可以同时供网站与app使用.

私有.其他应用与您的应用之间的交流无需知道您的应用是否安装.”

(url:developer.apple.com/library/con…)

创建通用链接

这个按照官方文档按步照班即可,或者参考以下链接:

dev.branch.io/getting-sta…

strivingboy.github.io/blog/2015/0…

通用链接的现状

现状:

1.目前我们的应用已经支持通用链接,但不能从微信中直接跳转至我们的应用。

2.用了一段时间之后通用链接失效。

3.对于部分手机偶现的所有APP的通用链接失效问题,已经询问苹果开发人员,目前尚未有回应。

已解决的问题:

1.在微信中无法跳转

因为之前在微信中跳转的domain域是相同的,所以导致从微信中无法跳转至我们的应用。

按如下操作:

a.在微信中打开的url为 https://a.xxx.com/zzz 的网页

b.点击该网页上通用链接的按钮,通用链接为a.xxx.com/yyy

会发现跳转失败,页面仍在微信网页中打开。

将步骤b中的通用链接改为:b.xxx.com/yyy再点击打开即可顺利跳转至我们的应用。

苹果官方解释如下:

“When a user is browsing your website in Safari and they tap a universal link to a URLin the same domainas the current webpage, iOS respects the user’s most likely intent and opens the link in Safari.If the user taps a universal link to a URL in a different domain, iOS opens the link in your app.”(url:developer.apple.com/library/con…)

即:相同domain的情况下的跳转,iOS系统会认为用户更倾向于在网页中继续跳转,所以不会跳转至对应的应用。

2.用了一段时间之后通用链接失效

原因: 使用通用链接跳转至我们应用后,点击状态栏右边的的 xxx.com 按钮,通用链接失效。

点击该按钮会被iOS认为是关闭用应用打开URL的功能。所以之后无法使用应用打开URL。

解决方案:将URL在safari中打开,然后往下拉会发现出现如下图的banner,点击右边的打开按钮即可恢复。

苹果官方解释如下:

When a user taps a universal link that you handle, iOS also examines the user’s recent choices to determine whether to open your app or your website. For example, a user who  has tapped a universal link to open your app can later choose to open your website in Safari by tapping a breadcrumb button in the status bar. After the user makes this choice, iOS  continues to open your website in Safari until the user chooses to open your app by tapping OPEN in the Smart App Banner on the webpage.

(url:developer.apple.com/library/con…)

没有解决的一些疑问:

问题现象:部分设备重启之后,通用链接失效

1.为什么设备重启之后通用链接会失效?

部分设备重启之后,丢失apple-app-site-association文件,导致url与应用之间的无法关联。从而导致通用链接失效。

2.为什么会丢失apple-app-site-association文件?

apple-app-site-association文件丢失属于系统级别的问题,目前没有很好的解释。

3.apple-app-site-association文件会重新下载吗?

目前苹果官方解释是只有在app安装的时候才会去请求下载验证该文件。

“When the app is installed, the system downloads and verifies the site association file for each of its associated domains. If the verification is successful, the app is associated with    the domain.”(url:developer.apple.com/reference/s…)

另外有猜测在应用更新时,也会去请求下载该文件。

(见:forums.developer.apple.com/thread/3017…,forums.developer.apple.com/thread/6972)

4.该通用链接失效时其他应用的通用链接能生效吗?

由于样本较少,就目前观察的情况而言,设备重启之后的失效会导致所有应用的通用链接失效。

5.有没有能解决的方案?

删除并重新安装应用可以修复,但目前没有确凿的官方解释来佐证。

在stackFlow (stackoverflow.com/questions/3…)以及 苹果开发者论坛    (forums.developer.apple.com/message/156…)上有类似的问题,目前尚未有解答。正在持续关注。


你可能感兴趣的:(Universal Link踩坑与研究)