什么是通用链接?
通用链接的优点
通用链接比自定义的URL链接有几处尤为突出的好处,具体来说,通用链接
独特性:与自定义的URL链接相比,通用链接不能被其他的应用程序所访问,因为
1:它们使用的是标准的HTTP 或 HTTPS 链接到你的网站。
安全性:当用户安装应用程序,iOS会检查您已经上传到web服务器文件,以确
2:保您的网站允许你的应用程序能打开代表它的URL 文件,只要你创建并且上传该文件,那么你的应用和服务器之间的关联是安全的。灵活性:当你的应用程序没有被安装的时候,通用链接照样能够工作。
3:当用户没有
安装你的应用程序,点击该链接,将会以用户所期望的以Safari的形式访问。
简单性:通用链接既能支持你的网站,又能支持你的应用
私有性:其他的应用程序能和你的应用程序通信,不管你的应用是否被安装。
准备使用通用链接
实现通用链接不难, 但首先必须遵守一些先决条件。如下:
有一个注册的域名
通过 SSL 访问域名
支持上传一个 JSON 文件到你的域名
至少 iOS 9 beta 2 版本 [下载],这很重要,
因为如果是之前的测试版本你需要做额外的操作。
至少 Xcode 7 beta 2
如果你都有了, 那就来按照下面3个步骤来做吧。
1.开启 Associated Domains 域:
进入苹果Apple Developer --- Member Center - Certificates, Identifiers & Profiles – Identifiers - App IDs –Edit 然后开启打钩 Associated Domains 后保存。
image description
2.添加域名到 Capabilities
用 applinks: 前缀添加所有域名, 同时不要忘了包含所有可能需要的子域名用applinks: 前缀添加所有域名, 同时不要忘了包含所有可能需要的子域名
3.上传 apple-app-site-association 文件
该文件必须存在且为了安全原因可使用 SSL 通过 GET 请求访问到。你可以打开一个文本编辑器然后写一个这样的简单 JSON 格式:
{
"applinks": {
"apps": [],
"details": [
{
"appID":
"paths": [ "*" ,"/","/archives/","/archives/*"]
},
{
"appID":
"paths": [ "*" ]
}
]
}
}
注意事项(1)
1, paths 路径是大小写敏感的
2, paths 内容可明确哪些通用链接需要被处理,哪些不需要
3, NOT 使用:为了明确指出不被处理的链接,可增加 “NOT”在链接前面
例 如 "paths": [ "/wwdc/news/", "NOT /videos/wwdc/2010/", "/videos/wwdc/201?/"]
4, 你可以使用 * 明确所有的网页
5, 也可以使用一个明确的的 URL,例如 /wwdc/news/
6, 也可以追加 * 到你的 URL ,例如 /videos/wwdc/2015/* 也可以使用 * 来匹配任何字符,使用 ? 来匹配一个字符,可以在路径 中使用这种混搭的形式, 例如 /foo/*/bar/201?/mypage
注意事项(2)
1, “appID”组成部分:TeamID + BundleId TeamID
2, BundleId 一定要和 APP 的 BundleId 一致。
3, apple-app-site-association 文件不能带后缀
4, apple-app-site-association 文件需要上传到网站根目录
5, 每一个代表着应用的 字典,必须包含一个 appID 和 paths, appID 是teamID 和 bundleID,paths 是一个字符串的数组
明确着你的应用支持的通用链接和你的应用程序不支持的通用连接内容。
下图就是 “appID”组成部分:TeamID + BundleId TeamID
image description
最后为了在 APP 里支持通用链接, 你需要在 AppDelegate 里实现相对应的逻辑
image description B6B1BAB7-FBDD-4CFD-8862-9B78738787E4 </a>
<a href="http://photozou.jp/photo/show/3167534/247236710">B6B1BAB7-FBDD-4CFD-8862-9B78738787E4</a> posted by <a href="http://photozou.jp/user/top/3167534">(C)sky521</a> IMG_0413 </a>
<a href="http://photozou.jp/photo/show/3167534/247236875">IMG_0413</a> posted by <a href="http://photozou.jp/user/top/3167534">(C)sky521</a>