后续文章也同时迁移至个人博客 http://kimihe.com/
背景
自苹果推出通用链接后,这一特性成为了app间无缝跳转的一个极佳方式,并且是突破企鹅某信封锁外链的有力工具。
本文不过多介绍如何配置,添加通用链接,已经有很多文章对此进行了详细的描述,大家可以先戳这里学习:
快速引导
本文主要介绍在配置完成后可能会遇到的问题和各种坑,先附上大神们的一部分总结:
- Universal Links will not work if you paste the link into the browser URL field.
- Universal Links work with a user driven
<a href="...">
element click across domains. Example: if there is a Universal * Link ongoogle.com
pointing to bnc.lt, it will open the app. - Universal Links will not work with a user driven
<a href="...">
element click on the same domain. Example: if there is a Universal Link ongoogle.com
pointing to a different Universal Link ongoogle.com
, it will not open the app. - Universal Links cannot be triggered via Javascript (in window.onload or via a .click() call on an
<a>
element), unless it is part of a user action.
总的说来,就是自从9.3.X改版之后,通用链接不支持域内跳转了,跳转前后的两个domain必须是不同的,否则只会safari打开。
个人补充
上述只是一小部分的总结,我在实际工程中还碰到了很多问题,有些目前仍旧无解。
- 在notes(系统笔记app),safari和各app的webView中点击链接是不同的,大体可以分为这三大类。
Safari的限制最为严格,而普通的webView和notes相对宽松(当然像某信这种做了拦截的除外)。
webView和notes的区别就在于,webView有可能会根据域名的情况进行不同操作:相同域名在当前页面内跳转新的web,而不打开app,而不同域名则会打开app。notes则会始终打开app。
Safari中也要前后不同域名才能打开app,但不同于webView,safari的域名跳转方式是前端术语:跳转
。而webView的域名跳转方式是前端术语:重定向
。 - 在safari中点击链接打开app后,细心的同学会看到app的右上角的navigationBar有
在xxx中打开
的选项,如果你点击了它,它会跳转到safari,同时系统会认为你选择使用safari打开该域名的链接,而不用app。也就是说下次你再点击该链接,它只会在safari里面跳转。那么如何在此开启app跳转呢?在safari页面中,手指往下拉动一下页面,会显示出一个“隐藏”的banner,俗称smart banner
,右侧是一个button:打开(open)
,点击它,就又会开启app跳转功能。 - app第一次启动时会去你配置的domain 的server上下载
apple-app-site-association
文件,通过该文件来开启通用链接,如果这个文件没有被下载成功,则不会开启该功能。但现在发现,在测试环境下(不上架)设备重启后,改文件就回丢失,且不会再去下载,因此通用链接就失效了。
第3点目前我还是不知道该如何解决这个问题,我在SoF上提了问题:
iOS9: After restarting my test device, Universal Links do not work any more如果大家有谁能给提供解答,非常欢迎留言。
That's all. Thanks for reading.
微信公众号
第一时间获取最新内容,欢迎关注微信公众号:「洛斯里克的大书库」。