iOS 通用链接(Universal Link)
Apple通用链接:一种能够方便的通过传统
HTTP
链接来启动 APP, 使用相同的网址打开网站和APP。通过唯一的网址, 不需要特别的schema就可以链接一个特定的视图到APP里面 。
比如:在微信中使用了通用链接, 那么用户在Safari、UIWebView或者 WKWebView点击一个链接, iOS设备上的微信app怎会在微信里面自动打开这个页面, 如果没有安装则在Safrai中打开响应链接。
一、系统要求:
iOS 9及以上系统,iOS 9以下仍旧用URL Scheme实现跳转。
二、使用方法:
- 在苹果开发者网站中打开需要使用
Universal Link
功能的App中的Associated Domains
。 - 创建一个json格式的
apple-app-site-associatio
,上传apple-app-site-association
到服务器根目录下。 - 在AppDelegate中实现相应的方法。
三、对比URL Scheme
- 由
其他应用
跳转到App或App对应界面,或跳转到其他App仍旧使用URL Scheme
。 Universal Link
适用于App跳转功能
,且待跳转功能配置文件存储在服务器,更加灵活。- App已经安装的前提下:直接
启动App
然后现实链接内容。 - App没有安装的前提下:Web上
继续显示
链接内容。
四、参数以及安全性
- 由于路径完全是自定义的,自由度很高,可以通过拼接路径的方式带参数;例如/path/x/parameter。
- 未安装App会直接在浏览器中继续打开链接,因此不能够带敏感信息。
五、注意点
- 首先你的服务器必须得支持SSL,必须支持HTTPS;我们只需要把配置好的json文件上传到服务器中该域名的根目录下,言下之意,我们可以用GET请求可以获取到https://www.example.com/apple-app-association;当我们的App在设备上第一次运行时,如果支持Associated Domains功能,那么iOS会自动去GET定义的Domain下的apple-app-site-association文件。
- 服务器上apple-app-site-association的更新不会让iOS本地的apple-app-site-association
同步更新
,即iOS只会在App第一次启动时请求一次
,以后除非App更新或重新安装,否则不会在每次打开时请求apple-app-site-association。 非系统原生App
不一定能支持直接点击URL跳转,例如在微信中点击URL会首先在微信内的WebView打开,如果要跳转只能再通过Safari打开。- 从9.3.X改版之后,通用链接不支持
域内跳转
了,跳转前后的两个domain必须是不同的,否则只会safari打开。跨域问题:假设当前网页的地址为 yoursite.com/a/*,如果要跳转的链接也是 yoursite.com/a/* 这个域下的,系统将不会进行拉起应用的操作,必须要跳转不同的子域,例如 yoursite.com/b/* 时,系统才会根据关联文件去判断是否要拉起应用。