Link to Apps – Universal Link

因业务需求,临时开一篇关于Deep Link/App Link的教程。
看似简单的需求,即在手机浏览器中通过点击一个链接可以调起本地的APP及其对应的页面。
现实中效果参照屡见不鲜,会对增加APP用户活性有一定的帮助。

因此,我处理的是业务需求,但是基于技术实现的。
在iOS、Google(Android)、腾讯全家桶、百度全家桶等公司,基于应用程序层面对这项技术有简单的称谓:
Universal Link,Deep Link,或者是App Link。无需多言,基本都是一个意思,实现方式会有不同。

接下来我解释一下Universal Link的一些细节,作为此系列的一个开篇。
从操作系统说起,更加简洁明了。

目前业务针对的是两种操作系统,即iOS、Android。
让我描绘几个场景:
1. 用户在短信应用中点击短信内容中的某个链接,此时启动了某个APP;
2. 用户在邮件应用中点击了一个链接,系统弹出是否用某应用打开,用户选择是,此时启动了某个APP;
3. 用户A在safari浏览器中,点击了网页中的一个链接(下载),此时启动了某个APP;而用户B的手机没有该APP,此时启动了AppStore并打开了该应用的下载页面。

以上场景除了第3个,其他两个都有可能发生在Android或iOS系统中。

#针对iOS
这里用到了一个叫Universal Link(通用链接)的技术规范。这是一项从iOS 9.0+ 开始被支持的一个功能。官方文档见iOS Universal Link 说明
简单讲,使用一个标准的https协议开头的链接(URL),去打开一个应用。
具体操作:
1. 确保以下操作是在开启了https的服务器上完成的,假设这台机器访问的域名是 jump.apptranz.com
2. 在APP中,我们要做的事情就是,在iOS开发平台,开启Associated Domains服务,并添加域名到配置中。
3. 创建一个关联文件,并部署在自己的服务器上(包含确定的域名,而不能用IP)。该文件直接放在根目录下,取名叫apple-app-site-association(不要加任何后缀)。文件内容如下,可以看出details中包含了若干个应用的appID,而paths对应着一组路径规范。

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "9JA89QQLNQ.com.apple.wwdc",
                "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
            },
            {
                "appID": "ABCD1234.com.apple.wwdc",
                "paths": [ "*" ]
            }
        ]
    }
}

以上,我们基本可以确定,使用 https://jump.apptranz.com 作为打开指定APP的通用链接。

#基本原理描述:
当一个APP被安装后,其包含的关联Domains信息会被iOS所记录。
当用户访问该域名时,系统将匹配到该Domain的信息,并打开所安装的APP。这里要注意,一定是https服务。

另外,Universal Link的触发,目前需要人机交互(点击等输入事件)的干预,才能触发。通过在网页中js的代码触发,将不能达到预期效果。

发表评论

电子邮件地址不会被公开。 必填项已用*标注