How Do Universal Links Work in iOS 9?
在Universal links出现之前,跳转app是通过浏览器再重定向去一个app的,这种跳转有点复杂,繁琐。开发者没办法知道这个app有没有安装。这意味着开发者每次都需要使用URL scheme。
iOS9 的Universal link就是为了修复这个问题而诞生的。当link被click后,它先会检测,被注册的链接是否是相关域名的链接。然后检查对应的app是否安装,安装就直接跳转,否则就用浏览器打开这个链接
Universal Link Integration Guide
配置你的app,来注册一个associated domains
1.在developers.app注册你的app
2.用你app的identifier启用 associated domains
3.在你的Xcode project启用 associated domains
4.添加正确的权限
5.在build的时候确保权限文件被包含进去了
配置你的website来持用apple-app-site-association
1.买一个域名(domains name);或者选择已有的
2.为你的域名创建SSL证书
3.创建名为“apple-app-site-association”的Json格式文件
4.用SSL证书对Json文件进行签名
5.配置你的文件服务
下面我们来仔细看看:
Section1:
配置你的app授权
为了注册你的universal link到Xcode project里面,你需要创建一个AppID。并且打开正确的权限。这很简单,和配置内置购买差不多(你的app identifier里面不能有通配符)
在 developer.app上面注册你app
就是用你的AppID去你的苹果开发者中心,点击进Certificates, Identifiers & Profiles页面。配置你的identifier,并应用到xcode中。
在你的开发者中心激活“Associated Domains”
在你的Xcode Project中打开该功能
确保你的team和identifier是正确的,在Capabilities的tab中打开"Associated Domains"
如果你在这里看到了一些错误:
- 确保team填写正确
-
确保你Xcode Project中的identifier和你app account里填写的identifier是一致的
添加domain权限
在Xcode的domain区域,添加正确的domain tag。你必须以applinks:开头,eg."applinks:yourdomain.com"
确保权限文件在build的时候已经被包含在project中了
处于某些原因,Xcode7在build的时候不能自动包含你的权限文件,需要你手动去添加。确保你的entitlements file被包含在正确的target中。
如果你使用的是Branch links,到这里就可以了。如果不是请继续阅读。建议使用Branch links
Section2:
Universal link把你的website URL转向一个app link,为了促使web完成转换,你需要使用一个web server。我们可以使用Universal links Validator来检测是否** apple-app-site-association file**被正确的配置了。
选择一个domain
关联一个domain。你可以注册一个新的或者使用已经存在的。如果注册新的尽量使用简洁的表达eg:ghandi.net
需要一个SSL certification
1.访问该网站,填表,生成一个 openSSL command。保持窗口打开
2.登录你的远程服务
3.执行openSSL命令,生成一个证书签名请求(.csr)和一个证书文件(.cert)
4.为你的证书付钱
5.待批准并下发给你一个最终文件
6.最后把yourdomain.com.cert, yourdomain.com.key,digicertintermediate.cert放到你远程服务的一个目录下
创建apple-app-site-association JSON
这里有一个标准的JSON文件结构,你只要拷贝下来修改一下
{
"applinks": {
"apps": [ ],
"details": [{
"appID": "T5TQ36Q2SQ.com.branch.sdk.TestBed",
"paths": ["*"]
}
]
}
为一要改变的地方就是T5TQ36Q2SQ.com.branch.sdk.TestBed,其实它是由两部分组成,这两部分你都可以在你的Identifier里面找到
就是把Prefix和ID链接在一起像这样:
T5TQ36Q2SQ.com.branch.sdk.TestBed
,保存这个文件为apple-app-site-association-unsigned
用SSL证书来给你的Json file签名
把证书上传到你的服务里面,目录和之前的一样。在命令行输入一下命令
cat apple-app-site-association-unsigned | openssl smime -sign -inkey yourdomain.com.key -signer yourdomain.com.cert -certfile digicertintermediate.cert -noattr -nodetach -outform DER > apple-app-site-association
生成文件apple-app-site-association
配置你的文件服务
你已经问为你的 apple-app-site-association 文件签名。现在你要做的就是配置你的文件服务,来持有它们。之类有几个建议:
1.发送时的头必须是application/pkcs7-mime
2.必须要重endpoint youdomain.com/apple-app-site-association里面传输
3.必须返回一个200的httpcode