Universal Links

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中。

Universal Links_第1张图片
Screen_Shot_2015-07-24_at_10.56.37_AM.png
Universal Links_第2张图片
s05_bundle_suffix_portal.png
s04_bundle_identifier_xcode.png
在你的开发者中心激活“Associated Domains”
Universal Links_第3张图片
Screen Shot 2016-07-11 at 3.18.51 PM.png
在你的Xcode Project中打开该功能

确保你的team和identifier是正确的,在Capabilities的tab中打开"Associated Domains"

Universal Links_第4张图片
s01_capabilities.png

如果你在这里看到了一些错误:

  • 确保team填写正确
  • 确保你Xcode Project中的identifier和你app account里填写的identifier是一致的


    Universal Links_第5张图片
    s02_ass_domains.png
添加domain权限

在Xcode的domain区域,添加正确的domain tag。你必须以applinks:开头,eg."applinks:yourdomain.com"

Universal Links_第6张图片
s03_add_domains.png
确保权限文件在build的时候已经被包含在project中了

处于某些原因,Xcode7在build的时候不能自动包含你的权限文件,需要你手动去添加。确保你的entitlements file被包含在正确的target中。

Universal Links_第7张图片
s04_included_for_target.png

如果你使用的是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里面找到

Universal Links_第8张图片
s0_app_prefix.png

就是把 PrefixID链接在一起像这样: 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

你可能感兴趣的:(Universal Links)