Universal Links 配置
在 iOS9 之前,使用 URL Scheme 从浏览器启动 App
在 iOS9 推出了 通用链接 (Universal Links), 通过 链接直接启动 APP
URL Scheme
通过 Safari 打开自己
Targets -> 项目 -> info -> URL Types 中, 新增一个 URL Schemes (如: haha), 通过 Safari 访问 haha://可选参数 可以打开该 APP
其他 APP 打开 haha
Info.plist 配置 LSApplicationQueriesSchemes 为 Array 把允许的 URL Scheme 添加进去
<key>LSApplicationQueriesSchemes</key>
<array>
<string>haha</string>
</array>
由于 iOS 9 系统策略更新,限制了 http 协议的访问, 将要使用的 URL Schemes 列为白名单
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>haha</string>
</array>
打开其他 APP
let urlString = "haha://可选参数"
let url = URL(string: urlString)
if UIApplication.shared.canOpenURL(url!) {
UIApplication.shared.open(url!)
}
Universal Links
先看下微信的 Universal Links
{
"applinks": {
"apps": [],
"details": [
{
"appID": "532LCLCWL8.com.tencent.xin",
"paths": ["/cgi-bin/newreadtemplate", "/app/*"]
}, {
"appID": "8P7343TG54.com.tencent.wc.xin",
"paths": ["/cgi-bin/newreadtemplate", "/*"]
}, {
...
}, {
"appID": "HKB8WPFBR9.com.tencent.xin.sdksample.db",
"paths": ["/sdksample/*"]
}
]
}
}
配置
- 创建
apple-app-site-association文件 (不要.json后缀名),application/jsonMIME 类型的纯文本文件
{
"applinks": {
"apps": [],
"details": [
{
"appID": "9JA89QQLNQ.com.apple.wwdc",
"paths": [ "/wwdc/news/", "NOT /videos/wwdc/2015/*"]
}, {
"appID": "ABCD1234.com.apple.wwdc",
"paths": [ "*" ]
}, {
"appID": "你的TeamId.你的BundleId",
"paths": [ "NOT /app/不能访问/*", "/wx_app/微信访问/*", "qq_app/qq访问/*" ]
}
]
}
}
- 将文件放在服务器的根目录或
.well-known子目录中 - 通过 HTTPS 访问
https://<domain>/apple-app-site-association或https://<domain>/.well-known/apple-app-site-association可下载文件或直接显示内容 - 登录 Apple Developer 配置
Capabilities启用Associated Domains - Xcode 中
Targets -> 项目 -> Capabilities添加Associated Domains为applinks:域名(如: applinks:www.mywebsite.com / applinks:*.mywebsite.com) - 测试
https://+applinks配置的域名+apple-app-site-association里的paths(如:https://domain.com/wx_app/123haha)- 手机备忘录填写该链接并点击, 成功跳转 APP
- Safari 打开 链接, 上方提示 打开 APP
备注
- nginx 配置
location /apple-app-site-association {
charset UTF-8;
default_type text/html;
return 200 '{\"applinks\":{\"apps\":[],\"details\":[{\"appID\":\"teamId.bundleId\",\"paths\":[\"/*\"]}]}}'
}
- 当用户点击通用链接时,iOS 会启动您的应用并向其发送一个
NSUserActivity对象












网友评论