Universal Links通用链接应用跳转总结以及坑

文章也同时在简书更新

背景

自苹果推出通用链接后,这一特性成为了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 on google.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 on google.com pointing to a different Universal Link on google.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打开。

个人补充

上述只是一小部分的总结,我在实际工程中还碰到了很多问题,有些目前仍旧无解。

  1. 在notes(系统笔记app),safari和各app的webView中点击链接是不同的,大体可以分为这三大类。
    Safari的限制最为严格,而普通的webView和notes相对宽松(当然像某信这种做了拦截的除外)。
    webView和notes的区别就在于,webView有可能会根据域名的情况进行不同操作:相同域名在当前页面内跳转新的web,而不打开app,而不同域名则会打开app。notes则会始终打开app。
    Safari中也要前后不同域名才能打开app,但不同于webView,safari的域名跳转方式是前端术语:跳转。而webView的域名跳转方式是前端术语:重定向
  2. 在safari中点击链接打开app后,细心的同学会看到app的右上角的navigationBar有在xxx中打开的选项,如果你点击了它,它会跳转到safari,同时系统会认为你选择使用safari打开该域名的链接,而不用app。也就是说下次你再点击该链接,它只会在safari里面跳转。那么如何在此开启app跳转呢?在safari页面中,手指往下拉动一下页面,会显示出一个“隐藏”的banner,俗称 smart banner,右侧是一个button:打开(open),点击它,就又会开启app跳转功能。
  3. 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.

微信公众号

第一时间获取最新内容,欢迎关注微信公众号:「洛斯里克的大书库」。
微信公众号「洛斯里克的大书库」

周鶏🐣(Kimiko) wechat
拿起手机扫一扫,欢迎关注我的个人微信公众号:「洛斯里克的大书库」。
坚持原创技术分享,您的支持将鼓励我继续创作!