[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
最新文章
- 部署 OpenStack VirtualBox
- jquery对标签属性操作
- .net架构设计读书笔记--第二章 设计体系结构
- EBS运行快速安装的程序时,提示DISPLAY变量设置不对
- svn提交代码的原则
- CentOS 6.5安装MySQL中文乱码问题解决
- Android开发了解——AAPT
- iOS之NSURLSessionDownloadTask下载
- ListBox控件例子
- Kafka发送消息失败原因
- Excel 数据导出
- bootstrap 轮播模板
- 升级node版本
- 第一周java学习总结
- 基于aws api gateway的asp.net core验证
- 安装Office2016遇到“无法流式传输Office”问题
- WinForm 进度条
- Python 面向对象1-面向对象介绍
- Atitit 最近资料文章列表r9 r8 月份 attilax总结
- c++中运算符重载