iOS Universal Links(通用链接)

1. 通用链接是什么?

如果你支持了通用链接,那么 iOS9 以上的用户在点击你网站的通用链接时,可以跳过走Safari的步骤,无缝切换到你的应用中。如果该用户没有安装你的应用,则会将用户带到相应的网站,哪个网站由你决定。

与使用 URL schemes 技术相比,Universal Links 有以下几点优势:

  • 唯一:因为 Universal Links 使用标准的 HTTP 或 HTTPS 协议链接到你自己的网站,所以不会被其他应用劫持。
  • 安全:当用户安装了你的应用以后,iOS 会自动检查你已经上传到你自己服务器上的一个文件,以确保你的网站允许你的应用遵循其自身的偏好打开某些 URL。只有你自己可以创建这个文件(即下文提到的 apple-app-site-association 文件),所以你的网站与你的应用之间的关联是安全的。
  • 灵活:当用户并没有安装你的应用时,Universal Links 依然可以工作,点击它会调起 Safari 同时将用户链接到相应网站页面。
  • 简单:一个 URL 同时支持你的网站和应用。
  • 私密:其他应用在不需要知道用户是否安装的情况下就可以与你的应用建立起联系。

2. apple-app-site-association 文件

如果想让你的应用支持 Universal Links,则必须上传一个文件到你的服务器,即 apple-app-site-association 文件。
注意,此文件内容是 JSON 格式,但是文件名不应包含 .json 后缀。这个文件要放在服务器根目录或者 .well-known 文件夹下。

In your apple-app-site-association file, you specify the paths from your website that should be handled as universal links along with those that should not be handled as universal links. Keep the list of paths fairly short and rely on wildcard matching to match larger sets of paths.

在 apple-app-site-association 文件中,你要说明你希望在自己的网站中哪些链接被当做 Universal Link 处理,哪些链接不被当做 Universal Link 处理。列表中的链接应当通过使用通配符匹配的方式以使之尽可能的短。Apple 规定此文件大小不能超过 128 KB。
以下是 Apple 官网给出的 apple-app-site-association 文件的例子。

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "9JA89QQLNQ.com.apple.wwdc",
                "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
            },
            {
                "appID": "ABCD1234.com.apple.wwdc",
                "paths": [ "*" ]
            }
        ]
    }
}

其中,details key 的值是一个数组,数组中包含若干个字典,每一个字典对应你网站支持的一个应用。字典中的 paths 字段定义了你网站中想要支持 Universal Links 的部分。如果想说明某部分不支持,则在该路径前面添加“NOT ”。

3. 为你的 APP 支持 Universal Links 做准备

当用户点击一个 Universal Links 时,系统会打开你的 APP 并向其发送一个 NSUserActivity 对象。你可以通过检测这个对象的方式以确认你的 APP 是如何被打开的。

在你的 APP 中应该做以下两件事:

  • 添加一个权限,说明你的 APP 所支持的域名。
  • 更新 app delegate 文件,以使之在接收到 NSUserActivity 对象时进行合适的响应。

你可能感兴趣的:(iOS Universal Links(通用链接))