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

一、Universal Links 配置过程

  1. 登录苹果账号后,点击创建的APP 的Bundle ID,跳转到APP 信息页面。
  2. 记录下Team ID 和Bundle 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唤醒的APPif (![userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {return YES;}NSURL *jumpUrl = userActivity.webpageURL; // 这个URL就是你跳转的那个URL,下载页地址,想要传参数可以直接在URL后面拼接// TODO:在这里进行跳转具体页面的操作return YES;
}

四 、Universal Links 与 URL 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链接后可以实现无缝跳转。


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/16055.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

37.RocketMQ之Broker消息存储源码分析

highlight: arduino-light 消息存储文件 rocketMQ的消息持久化在我们在搭建集群时都特意指定的文件存储路径,进入指定的store目录下就可以看到。 下面介绍各文件含义 CommitLog 存储消息的元数据。produce发出的所有消息都会顺序存入到CommitLog文件当中。 CommitLog由多个文件…

第一百天学习记录:线性代数:行列式(宋浩板书)

n阶行列式 注&#xff1a;二阶行列式和三阶行列式以及排列和逆序数见高等数学自学向量篇中间穿插的线性代数知识点补充。 行列式的性质 性质7&#xff08;☆☆☆&#xff09; 行列式按行展开 拉普拉斯 行列式相乘 行列式的计算 Cramer法则 题外话&#…

SpringMVC 程序开发:为什么要学SpringMVC?如何学SpringMVC?

文章目录 &#x1f387;前言1.MVC1.1 MVC 的定义1.2 MVC 与 Spring MVC的关系 2.为嘛要学Spring MVC&#xff1f;3.如何学习 Spring MVC&#xff1f;3.1 Spring MVC 创建和连接3.1.1 RequestMapping 注解介绍3.1.2 使用RequestMapping的参数修改请求方法3.1.3 GetMapping 和 Po…

二叉树题目:翻转二叉树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;翻转二叉树 出处&#xff1a;226. 翻转二叉树 难度 3 级 题目描述 要求 给定二叉树的根结点 root \texttt{ro…

DAY39:贪心算法(八)无重叠区间+划分字母区间+合并区间

文章目录 435.无重叠区间思路完整版注意点 右区间排序 763.划分字母区间思路完整版如何确定区间分界线debug测试时间复杂度 总结 56.合并区间&#xff08;写法1比较考验思维&#xff0c;推荐写法2&#xff09;思路写法1&#xff1a;直接在原数组上修改&#xff0c;更新i-1debug…

深兰科技发布《深兰数字智能产业系列报告(2023年):个人数字化》

近日&#xff0c;深兰科技发布《深兰数字智能产业系列报告(2023年)&#xff1a;个人数字化》&#xff0c;这是深兰科技在数字智能产业领域发布的首份研究报告&#xff0c;也是国内第一份个人数字化产业报告。此报告是在上海市经济和信息化委员会和上海市产业技术创新促进会的共…

【Redis】配置

&#x1f3af;Redis 配置 Redis 的配置文件位于 Redis 安装目录下&#xff0c;文件名为 redis.conf(Windows 名为 redis.windows.conf)。 1、查看配置 语法如下通过 config get 命令查看或设置配置项。 CONFIG GET 配置的名字 使用 * 号获取所有配置项 127.0.0.1:6379>…

IDEA使用教程 安装教程

16. Codota 插件 Codota 插件可以根据使用频率优先显示较常用的类和方法。然而&#xff0c;是否使用该插件取决于个人的偏好。有时工具只能作为参考&#xff0c;仍然需要依靠个人记忆来确保准确性。 17. 快速查看类和字段的注释 按下 F2 键可以快速查看某个类或字段的文档注…

stm32(定时器和PWM知识点)

一、定时器介绍 软件定时 缺点&#xff1a;不精确、占用CPU资源 void Delay500ms() //11.0592MHz { unsigned char i, j, k; _nop_(); i 4; j 129; k 119; do { do { while (--k); } while (--j); } while (--i); }定时器工作原理&#xff1a; 使用精准的时基&#xff0c…

赛效:怎么将PPT转为PDF

1&#xff1a;在电脑网页上打开云组件&#xff0c;点击“PPT转换”菜单里的“PPT转PDF”。 2&#xff1a;点击“选择文件”可以将本地PPT文件添加上去。 3&#xff1a;文件添加成功后&#xff0c;点击下方的“开始转换”按钮。 4&#xff1a;文件转换成功后&#xff0c;在预览页…

如何将京东商品复制上传到lazada店铺(阿里巴巴卖家必看的操作指南)

Lazada是东南亚市场的电商平台&#xff0c;因为它的入驻门槛比较低&#xff0c;并且有巨大的流量吸引了很多商家的入驻&#xff0c;那商家入驻之后要怎么上货呢?接下来我们就来给大家讲解一下这方面的内容。 本文主要介绍如何将商品上传到lazada&#xff0c;包括如何注册账号、…

centos7安装jenkins

引言 jenkins安装大家可以按照jenkin官网的步骤直接执行就可以&#xff0c;如下图&#xff1a; 不过由于我想使用jdk8&#xff0c;因此采用自己下载安装包的方式进行 首先创建jenkins安装目录&#xff1a; mkdir -p /usr/local/jenkins然后下载安装包&#xff1a; wget ht…