iOS Universal Links

什么是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。
}

Zmsky

http://xloli.net/?page_id=11

发表评论