微信平台最近开始逐步对iOS 旧版本 SDK能力(版本号低于1.8.6.1
)进行阶梯式调整:
1.2020年3月20日起对旧版本 SDK 发起的分享增加“未验证应用”安全提示
2.2020年6月1日起限制旧版本 SDK 使用微信分享、微信登录、打开小程序、一次性订阅消息等能力
SDK更新说明
解决以上两个问题需要更新微信SDK,新版SDK则需要配置universalLink
通用链接
universalLink
是iOS9推出的一项新功能,如果你的应用(app)支持通用链接universalLink
之后,iOS用户能够在点击网页的链接的时候无缝的重定向到已经安装的app,不需要额外的任何操作。如果没有安装对应的app,那么点击链接会使用Safari打开网页。在iOS9以前,对于各种浏览器,Safari中唤醒app的需求,我们通常是只能使用scheme的方式。
Universal Link配置方法
1.配置 apple-app-site-association 文件
创建json
文件,文件名必须为apple-app-site-association
且不需要.json
拓展名
{
"applinks": {
"apps": [],
"details": [
{
"appID": "teamID.bundleID",
"paths": [ "*" ]
}
]
}
}
这里的 "appID"指的是TeamID
+BundleId
的组成,配置时用.
拼接,TeamID和BundleId可以在开发者网站中找到

生成apple-app-site-association
文件后,需将其上传到服务器App所用域名的.well-known
的目录下或者根目录
下
- iOS会先请求
.well-known
的域名 -
apple-app-site-association
只会在APP第一次启动的时候请求一次,因此文件的任何更新的验证都需要APP重新安装或App Store更新
微信对Universal Links配置要求
a)Universal Links必须支持https
b)Universal Links配置的paths不能带query参数
c)微信使用Universal Links拉起第三方App时,会在Universal Links末尾拼接路径和参数,因此App配置的paths必须加上通配符/* (因此微信对应的path则为"paths": [ "/*" ]
)
2.打开Associated Domains开关,将Universal Links域名加到配置上
在项目Signing&Capabilities
中开启Associated Domains
功能,并添加Universal Links

服务器必须支持SSL
Domains可以添加多个
Domains必须以applinks:
开头
Domains填写的网址为微信开放平台里APP开发信息中的Universal Links
项,注意填写Domains时不需要https://的前缀

3.APPDelegate中配置continueUserActivity(只更新微信SDK可忽略此步骤)
#pragma mark Universal Link
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
NSURL *url = userActivity.webpageURL;
if ([url.host isEqualToString:@"公司域名"] ) {
//打开对应页面
}else{
[[UIApplication sharedApplication]openURL:url];
}
}
return YES;
}
在Safari
输入相关网址验证即可
项目中微信相关配置
在微信开放平台中配置好AppID
,AppSecret
和 Universal Links
(注意项目中配置与开放平台中需配置相同,否则会报universal link校验不通过或"errcode" = 40125)
1)Info
->URL Types
添加URL scheme
为你所注册的appid

2)Info.plist
->LSApplicationQueriesSchemes
添加weixin
和weixinULAPI

3)重写AppDelegate
或SceneDelegate
的continueUserActivity
方法
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRest
oring>> * __nullable restorableObjects))restorationHandler {
return [WXApi handleOpenUniversalLink:userActivity delegate:self];
}
网友评论