美文网首页iOS收藏Kevin的IOS开发专题
Universal Links通用链接应用跳转总结以及坑

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

作者: QihuaZhou | 来源:发表于2016-09-19 16:28 被阅读6591次

后续文章也同时迁移至个人博客 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 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.

微信公众号

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


微信公众号「洛斯里克的大书库」

相关文章

网友评论

  • 9becbd29dd79:楼主 我在safari和备忘录里都可以跳转 可是在微信里却跳转不了 求解是什么问题??
    QihuaZhou:@拖油瓶路人甲 这个不是很清楚
    9becbd29dd79:@周鶏 这样还有办法绕过去吗?
    QihuaZhou:@拖油瓶路人甲 很可能是微信做了拦截,类似的有不让点开支付宝链接。
  • Melody旭:作者您好,可以加一下您的qq或微信请教一下通用链接失效的问题吗?我的qq和微信都是506123357,摆脱了
    Melody旭:拜托了
  • 不想重复造轮子:该文件必须托管在https://具有有效证书的站点上(例如,Safari在查看站点时不得发出证书警告)。
    该文件不得使用任何重定向。
    在iOS 9.3.1及更高版本中,该文件不得大于128 KB(未压缩),无论是否已签名。
    如果您的应用程序在iOS 9及更高版本中运行,并且使用HTTPS来提供该文件,则可以创建使用application/jsonMIME类型的纯文本文件 这个application/jsonMIME类型 怎么弄出来的?
  • 邹启晨:抓包测试发现,每次都会去请求apple-app-site-association,不光光是第一次安装的时候。。。
    木木等你:@邹启晨 兄弟,是每次打开应用都回去请求?
  • 清晨日暮:LZ能加你好友请教一下吗?
    清晨日暮:@周鶏 我的QQ是532557007 或者麻烦您留个微信或者QQ 我去加您
    QihuaZhou:@清晨日暮 加我微信or Q?
  • 雨雪霏霏why:那么如何在此开启app跳转呢?在safari页面中,手指往下拉动一下页面,会显示出一个“隐藏”的banner,俗称 smart banner,右侧是一个button:打开(open),点击它,就又会开启app跳转功能。 怎么弄得,我怎么没找到 ,能截个图吗
  • 雨雪霏霏why:你好 在这个上面测试https://search.developer.apple.com/appsearch-validation-tool 一直失败 请问是怎么回事呢?
    雨雪霏霏why:@周鶏 估计他们的测试有问题
    雨雪霏霏why:@周鶏 测试通不过,但是却可以实现跳转到app。。。
    QihuaZhou:@雨雪霏霏why 因此,我并没有在这上面进行测试,直接用真机
  • _健健:有在这个地址测吗?https://search.developer.apple.com/appsearch-validation-tool
    QihuaZhou:@_健健 你号多少?
    _健健:@周鶏我一直不成功😳,加你qq聊一下吧
    QihuaZhou:@_健健 测试地址有时失效
  • 87e2aaf4e5b7:你好,如果我想跳转到app的指定界面应该怎么做? 我现在只实现了通过深度链接跳转到app。
    87e2aaf4e5b7:@87e2aaf4e5b7 hi,在吗
    87e2aaf4e5b7:我还有一个问题,如果点击跳转后,iphone上没有安装指定app,想要跳转到appstore下载,这个应该是怎么处理,我现在只能实现跳到app。
    QihuaZhou:@87e2aaf4e5b7 在你的appdelegate中拿到回调,根据业务逻辑处理。
  • KKCHIN:不知道楼主解决了问题没有,但是我这边测试,未上架的应用,即使是重启应用或者是重启手机,通用链接也是生效的。有可能是手机自动清理了你应用的数据,导致该json文件被清理。看看是不是手机容量不足造成
    QihuaZhou:@KKCHIN 谢谢你的帮助:smile:

本文标题:Universal Links通用链接应用跳转总结以及坑

本文链接:https://www.haomeiwen.com/subject/uihnettx.html