浅析iOS唤起APP之Universal Link(通用链接)

  官方文档:https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html 里有说到 Universal Links 是什么、注意点、以及如何配置的。简单来说就是:

当您支持通用链接时,iOS 用户可以点击指向您网站的链接,并无缝重定向到您安装的应用程序

  大白话就是说,用户通过点击某个链接,可以直接唤起对应的app。提供这样功能的目的是为了吸引网络用户(俗称引流)。(注意url的变化,一定是用户点击造成的!使用js触发是无效的)。

1、Universal Links 如何配置

图片

  简单的来说,配置Universal Links需要涉及到两方面 - 域名服务器和app:

(1)域名服务器上要配置apple-app-site-association文件 (也被称为AASA文件)

创建apple-app-site-association文件后,将其上传到 HTTPS Web 服务器的根目录或子目录.well-known。该文件需要可通过 HTTPS 访问(无需任何重定向),地址为https:///apple-app-site-association或https:///.well-known/apple-app-site-association。接下来,您需要处理应用程序中的通用链接

  即配置成以后,有3个链接要访问成功才可以:

https://你的域名.com/apple-app-site-association
https://你的域名.com/.well-known/apple-app-site-association
https://app-site-association.cdn-apple.com/a/v1/你的域名.com

  最后一个链接是苹果CDN链接,可以理解为只要这个地址返回正常,就说明我们配置的AASA文件没有问题

  配置指定文件:创建一个内容为json格式的文件,苹果将会在合适的时候,从我们在项目中填入的域名请求这个文件。这个文件名必须为apple-app-site-association,切记没有后缀名,文件内容大概是这样子:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "****.com.apple.wwdc",
                "paths": [ "/wwdc/news/"]
            },
            {
                "appID": "****.com.apple.wwdc",
                "paths": [ "*" ]
            }
        ]
    }
}

  说明:appID:组成方式是 teamId.yourapp’s bundle identifier。如上面的 9JA89QQLNQ就是teamId。登陆开发者中心,在Account -> Membership里面可以找到Team ID。

  paths:设定你的app支持的路径列表,只有这些指定的路径的链接,才能被app所处理。星号的写法代表了可识 别域名下所有链接。

  上传指定文件:上传该文件到你的域名所对应的根目录或者.well-known目录下,这是为了苹果服务器能获取到你上传的文件(注意:存在时间差问题,需过一段时间苹果才会访问)。上传完后,自己先访问一下看看是否能够获取到,当你在浏览器中输入这个文件链接后,应该是直接下载apple-app-site-association文件。

(2)app上要在Xcode的Associated Domains里面去配置applinks

  开发者中心配置:找到对应的App ID,在Application Services列表里有Associated Domains一条,把它变为Enabled就可以了。

  配置App ID支持Associated Domains:

cdca6ae66690954c02a8c4b9f1d5ab7b

2b1739f6a1655b5303df74670d015c56

  两方面都要配置好,才能正常使用Universal Links 唤起app。配置OK后,可以在钉钉、微信、safari浏览器、扫描器等里面直接通过配置的域名唤起app。

2、问题出现与调试

  打开那3个链接进行调试,发现只有前个是可以正常访问的,第三个显示Not Found

图片

  在shell里面运行,可以看到该请求的详细信息查看具体原因:

curl -v  https://app-site-association.cdn-apple.com/a/v1/你的域名.com
< Apple-Failure-Details: {"status":"405 Not Allowed"}
< Apple-Failure-Reason: SWCERR00101 Bad HTTP Response: 405 Method Not Allowed

 

posted @ 2017-08-17 22:27  古兰精  阅读(3947)  评论(0)    收藏  举报