Universal Link 演进及Demo实践

上下文

演进过程

iOS9之前,一直使用的是Schema URL技术来从外部对App进行跳转,但是,iOS系统中进行Schema URL跳转的时候如果没有安装App,会提示"Cannot open Page"的提示,非常不友好。

为了解决这个问题,研究出了比较成熟的方案来试探是否已经安装了这个App,那就是通过在H5页面中嵌入一个看不到的iframe,在iframe中进行schema的URL跳转,通过定时器检查是否已经跳转到了App来带来相对良好的体验。

从iOS9开始,苹果将这一路径封杀了,iframe无法再进行Schema URL的跳转;但关上一扇门也打开了一扇窗,从iOS9起可以使用Universal Links技术进行跳转页面,这是一种体验更加完美的解决方案。

可以使M站与App在iOS进行无缝结合,Universal Links的地址采用的是https://domain这样的普通网页地址的形式,在非自然流量访问m站的情况下,点击了Universal Links,如果安装了App,那么会自动跳转到App继续上一步操作,如果没有安装默认情况下则会请求这个URL地址继续在M站上进行操作。

当然通常的操作就是会引导去强制安装App,然后在安装完成的App上进行继续的操作,这也许与苹果当初的初衷又背道而驰了。

运作原理

App在安装完成的那一刻,iOS系统如果感知到这个App打开了Associated Domain能力,且添加了符合Universal Links的配置,就会从配置的域名下顺序分别请求:


https://domain/.well-known/apple-app-site-association

https://domain/apple-app-site-association

从文件中关联App,做好关联配置。

当系统中遇到触发Universal Links操作的时候就会根据关联配置对App进行打开,并且将完整地址传入AppDelegate中专门处理Universal Links的delegate方法中。

开发者便可以在这个delegate方法里进行相关处理,延续之前的操作。

实践

准备条件

  • 一个加入开发者计划的账号

因为苹果Universal Links技术需要用到Associated Domain的Capability,而能够在XCode的Capabilities页面中能够看到并且开启这个能力的只有加入开发者计划的账号才能打开。

  • 一个可以通过https请求的域名 二级三级都行

这个比较好解决,目前github的pages服务的二级域名就可以开启https,而且iOS9.3.1系统版本开始放宽了对文件格式必须是text/json的强制规定,普通的文本格式即可。

需要可以通过https://domain/apple-app-site-association访问到关联配置文件,否则Universal Links无法成立,目前这一条件比较宽松

这两个条件其中一个不满足就无法成立,果爸果然是霸道!👍

第一步:开启Associated Domain能力

使用加入苹果开发者计划的账号登录Xcode。
项目设置中选中开发者计划的账号,让Xcode帮助你完成各种一系列创建Profile及相关配置等。

项目配置开发者计划账号

到Capabilities选项卡,开启 Associated Domain 能力,并添加一个项目 applinks:domain

开启AD能力,配置域名

第二步:在domain下添加ios-app-site-association文件关联app

让网站的https://domain/apple-app-site-association返回以下内容

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "ABCDGroupID.com.liuxiaoming.demo.UniversalLinkDemo",
                "paths": [ "/scss/*", "/test2/*"]
            }
        ]
    }
}

其中appID需要自己拼接 格式为

[GroupID].[BoundleID]

paths中添加匹配的path数组,支持正则表达式。

最终以确保 https://domain/apple-app-site-association 可以访问到正确的内容

第三步 验证效果

编译安装到真机或者模拟器,是否自动启动无所谓,给自己发一条短信,内容是命中的网址,如例子中 https://domain/css/abc.css 就会命中Universal Links操作。

点击自己发送的短信链接,系统就会自动跳转到App中了。

注意点

自然流量

对于自然流量在domain网站中访问到触发Universal Links的情况,iOS并不会自动带入到App中,只会在页面顶部展示一个进入app的小条,而且需要用户加载完网页后下拉才能看到。

跳入app的小条

用户习惯变更

Paste_Image.png

如果用户在跳转如app后,点击了右上角返回网页,那么下次就会继续跳网页而不会跳app了,这个程序无法控制,需要用户自己在链接上长按,将其模式切换成跳转app才行。

iOS的bug

我自己尝试了一些,推测iOS9 <= version < 10.2存在一个bug就是apple-app-site-association文件更新不及时,需要重启并且删除重新安装才能生效。version >= 10.2不存在这个问题,触发过Universal Links后就会更新到最新内容。

看了下至少维护的App下10.2之前的版本已经是10%左右了,情况还是比较乐观,而且更新这个文件的频率较少,也比较难触发。

高级用法

因为Universal Links,所有操作无论在m站还是app中来回跳转都是可以延续上一步的操作,因为所有参数都是可以在两端中拿到,而如果将Universal Links引导到新装机则情况就不一样了App Store将上一步的数据隔断了,所以业界也会使用归因等技术让其连续起来,目前广泛知晓的Google的Firebase中动态链接技术。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容