[iOS]Universal Link
从零开始的操作流程在后面,这里把几个坑先挪到前面来 便于查看:
️
apple-app-site-association 只会在APP第一次启动的时候请求一次,因此文件的任何更新的验证都需要APP重新安装或App Store更新。
iOS 要使用 Universal Link,在客户端和网页端都需要进行配置
首先先看客户端的工作:
1.在APP 的工程中添加 Associated Domains
Xcode 11.4 及以上版本,直接在工程的的 Targets - Signing&Capabilities - +Capability - Associated Domains,添加Associated Domains

2.在 Associated Domains 进行链接的配置
点击添加按钮,添加要配置的网址链接,格式为 applinks:你的域名
比如你的域名是 www.hahaha.com, 那么你就配置成 applinks:www.hahaha.com
(注意前面不用加https:// 后面也不要加path 或者 /)

3.在 APPDelegate中 增加额外的处理方法
在 APPDelegate 中增加这个方法
在 APP被 universal link 唤醒后,就可以在这个函数内进行额外的处理(比如对path的处理来打开对应的界面等)
#pragma mark Universal Link
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
NSURL *url = userActivity.webpageURL;
// TODO 可以读到URL里的host ,path等内容,根据需求进行处理
}
// TODO 根据需求进行处理
return YES;
}
然后看网页端的配置:
1.客户端的开发人员需要给网页端提供一个 apple-app-site-association 的 json文件
创建一个文本文件,不要加后缀名,里面的json内容如下:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "你的TeamID.你的bundleID",
"paths": [ "/你的path/你的path/", "/你的另一个path/*"]
}
]
}
}
apps 字段 固定为一个空数组就可以了(为什么会有这种设置-_-)
我们关注一下 details 的写法:
首先,details 这个字段是一个数组,你可以配置多个元素,也就是说你的同一个域名其实可以打开不同的APP;
来看一个 detail 元素的格式:
️ appID,由两部分组成,teamID 和 budnleID。
首先是 teamID,去apple开发者网站-account,
https://developer.apple.com/account
点击 - 左侧 Membership ,就可以看到开发者账号的Team ID

TeamID 的格式 类似于 HILIE3CF44 (此处的teamID是编的),
然后我们继续找一下 bundleID,在你的工程中就可以找到

bundleID的格式,类似于 com.orancompany.peal ,(这个ID当然也是编的)
我们把这两个ID用点号拼在一起,就得到了这里需要的 appID :
HILIE3CF44.com.orancompany.peal
️下面再来看一下paths:
可以配置多个path;
结尾的 * 号表示这个路径之后不同的子路径也都可行;
只有域名+path的地址才能够唤起appID对应的APP;
paths中的内容,在唤起APP之后,APP中是可以接收到的,所以APP中通过对paths参数的判断,可以进一步打开不同的页面或者做其他的处理逻辑。
如果你这样写一个 detail
{
"appID": "HILIE3CF44.com.orancompany.peal",
"paths": [ "*"]
}
path里只有*,那么只要点击你的域名,就会唤起appID对应的APP。
2.让你们的网页开发人员把第一步的这个文件放到域名下的根目录 或者 .well-known (注意点号)目录下
必须支持HTTPS协议;
悄悄放一个apple的官方文档:https://developer.apple.com/documentation/xcode/allowing_apps_and_websites_to_link_to_your_content/supporting_universal_links_in_your_app
[iOS]Universal Link的更多相关文章
- iOS 唤起APP之Universal Link(通用链接)
什么是Universal Link(通用链接) Universal Link(通用链接)是Apple在iOS9推出的一种能够方便的通过传统HTTPS链接来启动APP的功能,可以使用相同的网址打开网址和 ...
- iOS 禁用`URL Scheme`和`Universal Link`(通用链接)
为什么要禁用URL Scheme和Universal Link(通用链接) 通常我们APP中都会嵌套一些web页面,有时我们的web页面会被DNS劫持从而跳转到其他APP中:或者是某些APP的Univ ...
- 简单配置iOS的通用链接,迅速解决“universal link 校验不通过”问题!
对于需要使用微信支付等功能的APP来说,对接微信提供的openSDK是不可缺少的一环.随着苹果iOS 13系统版本的安全升级,为此openSDK在1.8.6版本进行了适配.1.8.6之后的openSD ...
- iOS9 Universal Link实现
先来贴几个比较全面的帖子,看完就差不多了. 1 iOS 9 通用链接(Universal Links) 帖子注意项非常重要,仔细阅读. 自己补充几点: 1 服务器上配置的json文件apple-a ...
- iOS9上的Universal Link实现(教程)
1.Universal Link 理解为苹果官方支持deeplink就行了 2.通过点击HTTP链接启动APP Web・iOS应用在支持Universal Link的前提下,当用户点击特点的链接时会自 ...
- Universal Link 笔记
如何实现Universal Link? 简单地说三步,1.把一个配置文件放在指定服务器根目录 2.在Xcode中设置AssociateDomain 3.安装app时,会根据Xcode中设置的Assoc ...
- universal link使用
iOS9之后,苹果推出了universal link方案,该方案较url scheme有明显的改善.url scheme很难做到唯一. 而 universal link却是你自己控制的. 1.有一个H ...
- 钉钉 & URL Scheme & Universal Link & Deep Link
钉钉 & URL Scheme & Universal Link & Deep Link DD link https://www.cnblogs.com/xgqfrms/p/1 ...
- iOS Universal Links(通用链接)
公司的运维,发现最近大量的请求 /.well-known/apple-app-site-association这个文件,造成了大量的404,可是这是谁请求的呢? 其实是苹果从iOS9.3开始更改了通用 ...
- 微信、QQ添加Universal Link
官方说明 1. Universal Links是什么 Universal Links(通用链接),是苹果在iOS9之后,提供的一种"可通过传统HTTP链接来跳转APP"的能力. 该 ...
随机推荐
- 带你读AI论文丨S&P21 Survivalism: Living-Off-The-Land 经典离地攻击
摘要:这篇文章属于系统分析类的文章,通过详细的实验分析了离地攻击(Living-Off-The-Land)的威胁性和流行度,包括APT攻击中的利用及示例代码论证. 本文分享自华为云社区<[论文阅 ...
- 线上排查:内存异常使用导致full gc频繁
线上排查:内存异常使用导致full gc频繁 问题系统 日常巡检发现,应用线上出现频繁full gc 现象 应用线上出现频繁full gc 排查过程 分析dump 拉dump文件:小插曲:dump时如 ...
- YonBuilder移动开发平台App拉起第三方应用
在App的开发过程中,有一种常见场景,就是拉起第三方app,那么使用YonBuilder移动开发做app的时候,是怎么拉起第三方App的呢,下边我们讲一下步骤. 我们以安卓应用打开支付宝为例进行说明: ...
- python学习第一周总结
第一周内容概要 day01 typora软件安装 markdown语法 typora软件功能介绍 网络博文编写教程 计算机的本质 计算机的五大组成部分 计算机的三大核心硬件 day02 操作系统 编程 ...
- CentOS7安装了图形界面为默认如何修改默认登录到控制台
在安装的时候,选择了图形界面安装,一段时间后,想还是直接登录到控制台,需要的时候在手动登录到图形界面, 在CentOS7中的设置方法不同与之前的版本 在之前的版本中是修改配置文件 sudo nano ...
- 【Vue】计算属性 监听属性 组件通信 动态组件 插槽 vue-cli脚手架
目录 昨日回顾 1 计算属性 插值语法+函数 使用计算属性 计算属性重写过滤案例 2 监听属性 3 组件介绍和定义 组件之间数据隔离 4 组件通信 父子通信之父传子 父子通信之子传父 ref属性 扩展 ...
- uboot目录
目录 api 与硬件无关的 API 函数. arch 与架构体系有关的代码. 各种架构,例如arm cpu 各种版本的cpu, 例如armv7, arm9 各种厂商,例如瑞芯微mach-rockch ...
- 逆天的Zstack-工控机上测试
放假前一直在服务器上折腾Zstack跑数据库,调IOC.正好手头有个32G内存,intel i7处理器的工控机,就试试装Zstack跑跑看,想着即使重负荷的跑不了,跑跑docker之类的也行.装成功后 ...
- Windows 10系统设置多用户同时远程登录教程 and rdpwrap下载 and Win10多用户同时远程桌面的另类解决方案---支持1809和1909和2004版本V2.0
转载简书: Windows 10系统设置多用户同时远程登录教程 - 简书 (jianshu.com) 转载github: 发布 ·stascorp/rdpwrap ·GitHub 转载csdn: Wi ...
- 免杀之:C# XOR Shellcode
免杀之:C# XOR Shellcode 目录 免杀之:C# XOR Shellcode 1 环境准备 2 制作Shellcode后门文件 2.1 编译环境准备 2.2 生成XORKryptor程序 ...