可能最近有的朋友發現了某些App分享出去的內容在微信內顯示未驗證應用.但是不是每個版本的微信都這樣.
在微信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<UIApplicationOpenURLOptionsKey,id> *)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<id<UIUserActivityRestoring>> * _Nullable))restorationHandler;
集成的時候可能有的坑
universalLink怎麼填.
這裏分兩塊,第一塊是工程內的.比如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<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
NSURL *webpageURL = userActivity.webpageURL;
NSString *absoluteString = webpageURL.absoluteString;
if ([absoluteString containsString:@"wxd930ea5d5a258f4f"]) {/// 可以這樣判斷,或者是專門弄個微信的path給它用.
[WXAPI handleUniversal
}
}
}
分享時出現多次二次跳轉
登錄時出現多次確認彈窗
如果沒有上面的情況,但是分享出去還是顯示未驗證應用,可能是因爲沒刷新.可能需要等一天.詳情點這.
關於上架被拒
我們可以發現
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寫全,各種小坑還得自己去試.