美文网首页
Universal Links

Universal Links

作者: 董二千 | 来源:发表于2016-07-11 16:58 被阅读564次

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

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

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

    s01_capabilities.png

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

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


      s02_ass_domains.png
    添加domain权限

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

    s03_add_domains.png
    确保权限文件在build的时候已经被包含在project中了

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

    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里面找到

    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

          本文链接:https://www.haomeiwen.com/subject/wntjjttx.html