说明
此系列共有两篇文章, 如需要实现微信跳转到app功能, 阅读过此篇文章后, 可再查看此文章: iOS Universal Link 结合第三方实现微信唤起app
简介
Universal Link
, 中文是通用链接. 可以通过http(s)
来唤醒App
.优点:
- 用原生的
webView
来打开用户浏览的文章链接 - 个人认为, 利用此技术可以实现
Deep Link
<a href="https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2">官方文档点击</a>
集成步骤
-
Xcode
中开启Associated Domains
- 在
Associated Domains
中配置支持的Domains
(域名)
- <em>注:</em>
Domain
必须以applinks:
开头
`Xcode`中配置`Associated Domains`.png
- 如上面配置过后, 任何以
app.cuiyuhe.com
开头的URL
请求都可以被拦截.
-
Bundle ID
开启Associated Domains
- 配置固定格式的一个
json
文件, 此文件命名为apple-app-site-association
.
- 在
App
运行时会下载此文件.此文件用来链接与App
通信. - 此文件必须放在
https server
的根路径, 或.well-known
路径下.
- 所谓
https
, 即最终这个文件的下载路径必须是https
开头的路径
格式如下:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "9JA89QQLNQ.com.apple.wwdc",
"paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
},
{
"appID": "49LBJ5Y459.com.cuiyuhe.move",
"paths": [ "*" ]
}
]
}
}
解释:
- 只需要更改
details
数组中的值即可, 官方说可配置不超过20-30
个. - 第一个字典值是官方示例
-
[ "*" ]
表示拦截任何路径, 任何之前配置的, 以app.cuiyuhe.com
开头的URL
请求 -
appID
格式为TeamID.BundleID
.TeamID
登录开发者apple id
即可得到:
TeamID.png
代码中的相关支持
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity
restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
NSURL *toURL = userActivity.webpageURL;
NSString *urlString = toURL.absoluteString;
NSString *srcHost = toURL.host;
if ([srcHost isEqualToString:@"app.cuiyuhe.com"]) {
} else {
}
}
return YES;
}
测试是否成功
- 重新下载证书, 因为之前修改了证书
Associated Domains
属性 - 在手机备忘录中输入测试链接, 如:
http://app.cuiyuhe.com/api/v1/post/133662/
长按有在xx中打开
提示, 即代表成功:
配置成功截图
其它
测试配置的文件 apple-app-site-association
的 <a href="https://search.developer.apple.com/appsearch-validation-tool/">官方测试URL</a>
- 注: 我的
App
尚未发布时测试错误如下, 不知是不是有延迟:
测试错误
网友评论