第一次接触 universal link是发现有的app可以发短信里面带链接 点击直接用safari打开 跳转到app 大概粗略的看了一下 没有具体实施
第二次则是由于新版ios 微信sdk必须配置 每次到universal link配置就会卡住 所以决定研究一下这个到底是什么
创建一个json文件,名称必须为 apple-app-site-association,⚠️该文件不可带 .json 的后缀名
apple-app-site-association 文件必须放在https服务器的根目录下,例:https://kahui.huankaun.com 这个路径下 ⚠️一定是根目录,也就是说该文件必须是一级目录,供下载使用
* apple-app-site-association 文件格式:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15{
"applinks": {
"apps": [],
"details": [
{
"appID": "teamID.bundleId",
"paths": ["/deaplink","/wwdc/news/","*"]
},
{
"appID": "ABCD1234.com.apple.wwdc",
"paths": [ "*" ]
}
]
}
}1) appID :appID 格式为 teamID.bundleId形式,譬如说我的
teamID
是xxxxxxxxxxx
,bundleId
是com.mytest.app 那么我的appID
就是:xxxxxxxxxxx.com.mytest.app。
teamID:打开苹果官网,点击Account,点击左边栏的 Membership,查找teamID2) 设定一个App的路径支持列表,只有这些指定的路径链接才会被App所处理。格式如下:
1
"paths": [ "/wwdc/news/", "NOT /videos/wwdc/2010/*", "/videos/wwdc/201?/*"]
- 使用
*
配置,则整个网站都可以使用 - 使用特定的URL,例如
/wwdc/news/
来指定某一个特殊的链接。 - 在特定URL后面添加
*
,例如/videos/wwdc/2015/*
, 来指定网站的某一部分。如果你的网站是www.yohunl.com,你的path写的是”/support/*”,那么当用户点击www.yohunl.com/support/myDoucument,就可以进入你的app了,相反www.yohunl.com/other 就不会. - 除了使用
*
来匹配任意字符,你也可以使用?
来匹配单个字符,你可以在路径当中结合这两个字符使用,例如/foo/*/bar/201?/mypage
需要注意的是:
配置的paths路径,是区分大小写的- 使用
将
apple-app-site-association
文件上传到您的HTTPS Web服务器。您可以将文件放在服务器的根目录或.well-known
子目录中。- 确保使用
https://yourdomain.com/apple-app-site-association
这个链接可以访问到,yourdomain.com
为你的服务器域名。 - 也可以使用苹果的验证网站,验证文件是否能被苹果请求到。
- 确保使用
建立web网页和app应用之间的关联 ->
app IDs
配置 和 项目配置进入开发者网站,找到你自己的
bundleId
,可以点击edit
按钮,开启associate domains
在项目的
Capablities
中开启Associated domains
注意domains
可以添加多个,前缀必须为applinks:
,applinks:
后为你的服务器的域名。
代码接收Universal Links唤醒
1 | -(BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler{ |
在appdelegate中实现上面这个方法,当使用Universal Links唤醒app时就执行这个方法。
验证以上配置
测试 Universal Link 是否可用
备忘录里输入可以让 app 处理的 Universal Link 网址,例如 我配置的paths 是
["*"]
, 表示域名下的任意网址, 我在备忘录里输入 https://foobar.com/foo 然后点击,如果成功是会打开 app 的。
下面是微信1.8.6sdk配置的方法
具体参考文档 https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/iOS.html
ps:
向微信注册你的应用程序id和Universal Links
到 开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将获得AppID,可立即用于开发。但应用登记完成后还需要提交审核,只有审核通过的应用才能正式发布使用。
- Target —> info —> LSApplicationQueriesSchemes —> 添加 weixinULAPI