可能最近有的朋友发现了某些App分享出去的内容在微信内显示未验证应用.但是不是每个版本的微信都这样.
iOS接入指南
在微信7.0.7(iOS 12-13)以及以上版本的分享可能会出现"未验证应用"(目前看来是iOS12-13有这个特性)
这个主要是由于安全性考虑,微信将scheme跳转换成Universal Links(这个经过我的测试发现不是全量的,在iOS12-13上是这样)
info.plist文件中添加LSApplicationQueriesSchemes
(Array).以及添加两个元素weixin
weixinULAPI
.
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url;
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options;
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray> * _Nullable))restorationHandler;
这里分两块,第一块是工程内的.比如SDKSample的Associated Domains
内的是help.wechat.com
.
applinks:help.wechat.com
微信SDKDemo的apple-app-site-association文件
这个文件需要放到你填写的网址的根路径下,就比如这个demo需要放在
https://help.wechat.com/apple-app-site-association
下或者是
https://help.wechat.com/.well-known/apple-app-site-association
并且需要注意的是这个文件不能有后缀名.
这个文件的请求时机是App安装时,系统自动去Associated Domains
里面填写的内容去请求的.所以要测试的时候可以删除调再装App即可.
/// details内有很多,但是我之关注sdksample这个
{
"applinks": {
"apps": [],
"details": [
{
"appID": "8P7343TG54.com.tencent.wc.xin.SDKSample",
"paths": [
"/sdksample/*"
]
}
]
}
}
工程内的注册代码
//向微信注册
[WXApi registerApp:@"wxd930ea5d5a258f4f" universalLink:@"https://help.wechat.com/sdksample/"];
那么这里填什么呢
经过我的测试.Xcode内[WXApi registerApp:@"wxd930ea5d5a258f4f" universalLink:@"https://help.wechat.com/sdksample/"];
的这个URL需要和微信开放平台填写的universalLink相同(微信的要求是https开头,/结尾)
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray> * _Nullable))restorationHandler {
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
NSURL *webpageURL = userActivity.webpageURL;
NSString *absoluteString = webpageURL.absoluteString;
if ([absoluteString containsString:@"wxd930ea5d5a258f4f"]) {/// 可以这样判断,或者是专门弄个微信的path给它用.
[WXAPI handleUniversal
}
}
}
如果没有上面的情况,但是分享出去还是显示未验证应用,可能是因为没刷新.可能需要等一天(经过两次测试,发现一般都是第二天10点以后刷新,刷新之后得重新分享一次才会将所有的未验证应用的状态刷新).详情点这.
微信OpenSDk更新说明
我们可以发现
SDK1.8.6.2
修改包含"UIWebView"字符的类名
SDK1.8.6.1
UIWebview切换成WKWebview
支持Universal Link拉起微信以及返回App
移除MTA库
而苹果2020年已经不允许新上架的包包含UIWebView功能,而且到2020年12月份,旧包提交更新也不允许有UIWebView,所以建议大家使用1.8.6.2以及以上版本(这个是包含了UIWebView字符都不行…这个已经在我一朋友公司的新项目里头得到了验证23333)
这个图片是微信开放平台上面App的图片(以前貌似没这块儿),这个需要注意(PS:吐个槽,我已经看到几款App的图片是乱放的了…)
这里是微信开放平台官方解释
这个可能是微信那边的问题,因为他们这个不是实时更新的.详情见iOS应用出现未验证应用的问题排查.
最后吐槽一下微信开放平台,找个东西都不好找.写文档的人也没有把case写全,各种小坑还得自己去试.