微信平台最近开始逐步对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
scheme
2)Info.plist->LSApplicationQueriesSchemes添加weixin 和weixinULAPI
LSApplicationQueriesSchemes
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];
}












网友评论