iOS通用链接(UniversalLink)配置详细流程

简介

Universal Links 是苹果自iOS9.0推出的用于应用之间跳转的一种安全认证机制,主要用来通过HTTPS链接来无缝启动APP。手机中如果安装了支持该链接的APP就会直接进入到APP中。如果没有安装APP则会跳转到Safari浏览器中,展示H5页面。

一、Universal Links 配置过程

  1. 登录苹果账号后,点击创建的APP 的Bundle ID,跳转到APP 信息页面。
  2. 记录下Team IDBundle ID 备用。
  3. 勾选上 功能列表上的 ”Associated Domains“选项。
配置苹果后台
  1. 创建一个text空文本文件,去掉文件后缀,命名为apple-app-site-association(不能修改,且不能添加后缀)。
  2. 文件内添加json格式数据,内容如下
{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID":"8ARUHGUQNH.com.YHKJ.AppSample",
                "paths": [ "/AppSample/*"]
            }
        ]
    }
}

如果一个域名下面有多端APP,可写作

{
    "applinks":{
        "apps":[],
        "details":[
            {
                "appID":"8ARUHGUQNH.com.YHKJ.AppSample",
                "paths":["/AppSample/*"]
            }
            {
                "appID":"8ARUHGUQNH.com.YHKJ.appManage",
                "paths":["/manageAppSample/*"]
            }
        ]
    }
}

apps:为必写且固定为[ ]
appID是指:TeamID.BundleId的组成
paths:是一个支持的路径列表字符串数组,可以是一个也可以是多个,用于过滤可以跳转到App的链接,支持通配符*,通配符表示允许该域名下的任意路径。
details数组中可以配置多个APP的信息,如果有多个APP需要支持Universal,则可以直接添加多个。
严格区分字母大小写

  1. apple-app-site-association文件创建好后 发给后台,让后台放到域名的服务器根目录下,也可以在根目录中添加.well-known文件夹,将文件上传到.well-known文件夹下(.点一定不能少),对应连接分别为
https://xxx/apple-app-site-association
https://xxx/.well-known/apple-app-site-association
xxx为服务端的域名
  1. 打开你的iOS工程,如下添加“Associated Domains”功能 和 域名地址,
    applinks:域名地址,Domains中的域名必须是使用applinks开头。
添加Associated Domains
添加域名地址

二、测试Universal Link链接

苹果提供了一个网页来验证我们编写的这个apple-app-site-association文件是否合法有效,
https://search.developer.apple.com/appsearch-validation-tool/

如果 Universal Link 配置成功,在iOS自带Safari浏览器中,打开 Universal Link 链接,下拉会出现应用入口,点击“打开”可以跳转至原生App;如打开微信的 Universal Link : https://help.wechat.com/app/ 如下图

打开微信通用链接

二 、Universal Link 的运行机制原理

  1. 当App初次安装后或者更新版本后的第一次启动(第二次启动就不会),向工程配置的applinks:的域名请求apple-app-site-association配置文件。
  2. App自动的将apple-app-site-association配置文件向iOS系统配置。
  3. 当任何WebView发起UniversalLink的url的时候,系统遍历注册过的通用链接,如果命中则直接打开App触发Delegate方法。
  4. 如果没命中,WebView继续跳转加载url。
    以上都是系统默默替你做的,我们要做的就是确保配置的正确性。

三 、注意事项

  1. 服务器的域名地址必须是HTTPS的,并且SSL证书必须通过苹果信任。苹果支持的HTTPS证书列表
  2. apple-app-site-association名称不能变,不能加后缀,只能放在上面说的服务器位置。但是 iOS 会先去请求.well-known 路径,如果apple-app-site-association文件请求不到,再去请求根目录,所以如果想要避免服务器接收过多GET请求,可以直接把apple-app-site-association文件放到well-known目录下。
  3. 服务器上apple-app-site-association的更新不会让iOS本地的apple-app-site-association同步更新,Universal Link的更新 只有在APP第一次安装 和 更新版本的时候,如果Universal Link有变更,只能重新打包发版,然后让用户更新版本或者卸载重装。
  4. 跨域问题,如果由当前网页跳转Universal Link打开APP,当前网页的域名和Universal Link 的域名必须 不能一致,否则不会跳转,只会在当前的WebView里面跳转。
  5. 由浏览器或其他app应用跳转进入我自己的APP时接收回调,要在AppDelegate.m/SceneDelegate.m中实现下面回调方法:
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
    // NSUserActivityTypeBrowsingWeb 由Universal Links唤醒的APP
    if (![userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
        return YES;
    }
    NSURL *jumpUrl = userActivity.webpageURL; // 这个URL就是你跳转的那个URL,下载页地址,想要传参数可以直接在URL后面拼接
    // TODO:在这里进行跳转具体页面的操作
    return YES;
}

四 、Universal LinksURL Scheme

另一种 外部唤起App 的方式是URL Scheme,但是URL Scheme有一些弊端。

  1. Universal Links 具有唯一性,比较安全。它是使用标准的HTTPS协议链接到你的web站点,所以一般不会被其它的APP所声明。而URL Scheme是由开发者自定义的,没有限制,任何App都可以用同一个名字,有些钓鱼App可以 设置知名的APP 的URL Scheme 来欺骗用户。

  2. URL Scheme可以通过canOpenURL判断用户是否安装App,但是只有安装了APP才能跳转,未安装则没有效果。而Universal Links 如果安装了就跳转APP,如果未安装就跳转网页展示你网站的内容,比较灵活。

  3. 使用scheme跳转系统会弹框提示,替换成UL链接后可以实现无缝跳转。

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

推荐阅读更多精彩内容