配置Universal Link
创建apple-app-site-association
- 文件名 必须为 apple-app-site-association,纯json文本没有后缀
- 域名必须支持 https 且符合苹果认证的 https证书
- 文件 必须放在服务器 根目录或者 .well-known目录下
apple-app-site-association格式
{
"applinks": {
"apps": [],
"details": [
{
"appID": "teamID.com.xx.appa",
"paths": [
"/a/*"
]
},
{
"appID": "teamID.com.xx.appb",
"paths": [
"*"
]
}
]
}
}
如下是知乎的配置
{
"applinks": {
"apps": [],
"details": {
"8J52SRPW6X.com.zhihu.ios": {
"paths": [
"*"
]
},
"886PYH8YW5.com.zhihu.ios": {
"paths": [
"*"
]
},
"B6MTNRMU2Y.com.zhihu.ios": {
"paths": [
"*"
]
},
"B6MTNRMU2Y.com.zhihu.ios-dev": {
"paths": [
"*"
]
}
}
},
"webcredentials": {
"apps": [
"8J52SRPW6X.com.zhihu.ios",
"886PYH8YW5.com.zhihu.ios",
"B6MTNRMU2Y.com.zhihu.ios",
"B6MTNRMU2Y.com.zhihu.ios-dev"
]
},
"activitycontinuation": {
"apps": [
"8J52SRPW6X.com.zhihu.ios",
"886PYH8YW5.com.zhihu.ios",
"B6MTNRMU2Y.com.zhihu.ios",
"B6MTNRMU2Y.com.zhihu.ios-dev"
]
}
}
验证 apple-app-site-association 是否上传成功
apple-app-site-association文件上传完成后,通过浏览器能正常访问 apple-app-site-association文件内容说明上传成功。
-
如果文件放在 根目录下,链接为:oia.xx.com/apple-app-s…
-
如果文件放在 .well-known目录下,则链接为:oia.xx.com/.well-known…
这里“oia.xx.com”为配置 Universal Link的域名
配置Associated Domains
Apple Developer配置
在 Identifiers 中开启 Associated Domains功能并重新下载 Profiles 文件
项目配置
在项目 Target -> Signing & Capabilities -> Associated Domains 下添加配置 Univers****al Link的域名,格式如下:
applinks:你的域名
如:applinks:oia.xx.com
跳转指定页面
在项目中监听 - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler
代理方法
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler {
// 自定义Universal Link跳转处理
NSURLComponents *components = [[NSURLComponents alloc] initWithString:userActivity.webpageURL.absoluteString];
[components.queryItems enumerateObjectsUsingBlock:^(NSURLQueryItem * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if ([obj.name isEqualToString:@"reUrl"]) {
// todo
*stop = YES;
}
}];
// 微信处理逻辑
return [WXApi handleOpenUniversalLink:userActivity delegate:self];
}
结果与预期
上面步骤都配置完成且安装完App后,在Safari浏览器 中打开域名 "oia.xx.com" 能正常看到类似下面的页面,点击【打开】能正常打开App 表明 Universal Link已经接入成功了
自定义打开
在 h5 项目中通过 window.location.href
打开触发 Universal Link 打开App
onClik() {
window.location.href = 'https://oia.xx.com?reUrl=xx'
}
注意事项
- 操作系统为 iOS 9.0以上
- Universal Link需要跨域才会触发,比如在 A域名 下配置了 Universal Link,在 A域名 下打开 A域名 下的链接不会触发,在 B域名 下的链接打开A域名 下的链接才会触发(只要域名不一样被苹果识别为跨域才会触发Universal Link)
- 哪个域名需要打开APP哪个域名配置 Universal Link
友情提示
见原文:【iOS特性】Universal Links打开app跳转指定页面)
本文同步自微信公众号 "程序员小溪" ,这里只是同步,想看及时消息请移步我的公众号,不定时更新我的学习经验。