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/json
MIME 类型的纯文本文件
{
"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
对象
网友评论