Universal Links 实现

569 阅读2分钟

Universal Links 实现

背景:

在iOS 9以前,我们从外部启动App都是通过URL Scheme实现跳转的。这种方式虽然可自定程度很高,能够巧妙地实现很多跳转,但弊端也很明显:我们只能通过scheme://example这种格式的链接来实现跳转,而且现在苹果还对这种方式的跳转加了一个提示框:“是否打开XXX”。对于对Web和原生App交互的场景需求量很大的产品来说,这样的跳转方式显然是步骤冗杂的,用户体验并不好。 iOS 9以后,Universal Link的出现解决了这个问题。它所提供的直接、顺畅、无缝衔接的跳转能够让用户体验提升一个级别。用户可以点击开发者指定的类似于 xxx.com 的URL直接唤醒App,而不需要在浏览器打开再点击其他按钮。

配置:

首先,我们要在苹果开发者网站中开启App的Associated Domains功能。 在Account -> Certificates, Identifiers & Profiles -> App IDs -> YourApp -> Edit中把Associated Domains设置为Enable 然后我们需要配置一下工程文件,找到Capabilities -> Associated Domains 打开此功能并把你需要跳转的domain加进去,格式为 applinks:支持跳转的域名

1.png

部署

1.首先部署的服务器必须支持ssl 连接必须支持https协议 2.在根本录下部署一个json文件。文件名为:apple-app-site-association命名 不能带json后缀 json文件的格式:

{
   "applinks": {
       "app": [],
       "details": [
           {
               "appID": "5JPP6UQR2H.com.hangZhouYadaoTechnology.binbinClient",
               "paths": [
                   "*"
               ]
           }
       ]
   }
}

appID: TeamID加上Bundle ID path: 支持Universal Link,也就是可以跳转的路径。* 代表此域名下所有路径都支持,也可以具体制定到某个页面例如:/path1/path2 或者某个路径下所有URL例如:path/*

具体可见官方文档内容:developer.apple.com/library/con… 注意:

1.服务器上apple-app-site-association的更新不会让iOS本地的apple-app-site-association同步更新,即iOS只会在App第一次启动时请求一次,以后除非App更新或重新安装否则不会在每次打开时请求apple-app-site-association

2.在Safari下打开 xxxx.com/test 时候会出现如下图所示 (可以点击打开 调转到对应的APP) 08A6A86D-FDC7-4E40-9E12-A7BF8BDE0A72.png

但是 在微信和qq 中打开连接却没有出现,只能通过Safari打开连接才能跳转。 为了能在微信和qq中打开是也能跳转到app,我们可以通过访问跨域连接的方式打开(亲测可行) 实现:通过一个普通网页连接,访问你的调转连接,这两个连接必须是不同域名下连接,这样才能造成跨域访问。前者的连接可以是普通的http连接,但是跳转连接必须是https连接,之前的毕笔记也强调过。 实现后访问如图:(在Safari中打开)

在微信和qq中点击会直接进行跳转

60ECCFB4-712C-4CA7-9B71-6C06DFF3A1FA.png