什么是Universal Links?
Universal Links 中文名:通用链接,是苹果在推出iOS9的时候推出的新功能,一种能方便的通过传统的HTTP链接来启动App,使用相同的网址打开网站和App。
通过唯一的网址,不需要Schema就可以跳转到界面到App里面,比如说在搜索引擎中搜索到某新闻(比如OO新闻网),点击新闻链接之后,如果iOS设备中安装了(并且支持通用链接)的应用,那么它将自动在App中打开这个页面,如果没有安装则在Safari中直接打开链接(和浏览网站一样)。
如果在服务器上配置Universal Links?
需要在域名根目录创建一个 apple-app-site-association
文件,没有任何扩展名。
文件内容如下:
{ "applinks": { "apps": [], "details": [ { "appID": "9JA89QQLNQ.com.apple.wwdc", "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*" ] }, { "appID": "TeamID.BundleID2", "paths": [ "*" ] } ] } }
appID 必须是TeamID.Bundle Identifier
的组合
根据paths键设定允许的列表,或者使用星号
来表示任意。
注意:区分大小写。
举例:
* 只要域名符合即可,路径随意。
比如:http://xloli.net
/news/id/* 路径必须是 “/news/id/” + 后面任意
比如:http://xloli.net/news/id/12345
/news/ 路径必须是 “/news/”
比如:http://xloli.net/news/
再次提醒,apple-app-site-association必须在根目录。
Web服务器必须支持HTTPS,客户端只支持HTTPS协议访问,并且不支持任何重定向。
App处理Universal Links
点击项目设置中的Capabilities,将AssociatedDomains打开为ON(同时还需要在开发者网站中AppID中也要打开)。
在下面Domains中添加域名,格式如下:
applinks:domain.com
举例:
applinks:xloli.net
applinks:www.xloli.net
当设置完毕之后,当你第一次启动App的时候会从指定的路径自动下载文件。
https://domain.com/apple-app-site-association
最后需要在AppDelegate中实现自己的逻辑,比如根据URL的规则进行指定的跳转。
func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool { if let url = userActivity.webpageURL { print(url) // 根据URL 书写自己必要的逻辑代码 } return true // true 将会打开App, false 不会打开App。 }