最近微信對老版本sdk開始限制部分功能,分享、第三方登陸、支付等功能都會出現未驗證應用,因此不得不更新最新版本sdk,下面就主要介紹對接最新版本的坑,主要是Universal Links這方面(主要是不瞭解)。html
要對接最新的微信sdk,你必需要了解一下Universal Links是什麼,由於最新sdk根據Universal Links來判斷來源app是否可信。json
IOS主流跳轉方案有兩種:xcode
1:Scheme微信
2:Universal Linksapp
Scheme的協議是由開發者徹底自定義,同時訪問失敗沒有任何內容能夠展示,因此IOS9就引入Universal Links。Universal Links 是經過域名下apple-app-site-association來肯定app,由於域名又必須是https又不會重複,還能看成地址來訪問網頁,解決了上述兩個問題。ide
首先你要建立apple-app-site-association文件(注意沒有任何後綴名,純文本的文件),放到你https域名更目錄下,訪問對應的域名https://xxx.xxx.xx/apple-app-site-association 能下載文件就能夠(也能夠放到根目錄下.well-known文件夾下,跟ssl證書配置的同樣的文件夾,其餘文件夾暫時沒試過是否能夠,知道的小夥伴能夠留個言)。文件內容是個json字符串:測試
1 { 2 "applinks": { 3 "apps": [], 4 "details": [ 5 { 6 "appID": "%1.%2", 7 "paths": ["*" ] 8 } 9 ] 10 } 11 }
其中%1是蘋果開發者帳號的teamid,%2是指對應app的bundle idui
teamid不知道在哪裏的小夥伴,參考下圖(bundle id我就不作贅述了 不知道的小夥去面壁思過)spa
json中path是幹什麼用的:3d
1:用來告訴safari那些是Universal Links。例如:https://www.baidu.com 是你的域名,path配置爲["/test/*"],那麼你在手機裏safari打開https://www.baidu.com/test/xxx就會有app打開提示以下圖(這個提示圖要下個步驟配置好纔有):
你訪問https://www.baidu.com/ex/xxx 就沒有提示
2:啓動 App 時 看成參數給 App 傳進來,但因爲這是爲了對接微信sdk因此這塊內容不作深究,有興趣的小夥伴能夠研究一下
在蘋果開發者帳號裏面勾選對應app的Associated Domains
在xcode裏面配置(若是你是自動獲取簽名方式,xcode裏面添加好Associated Domains,開發者後臺自動勾選Associated Domains)
注意Domains填的就是上一步apple-app-site-association放的域名,例:applinks:www.baidu.com(不要https://,不要加路徑path)
到這裏Universal Links的配置就ok了,手機從新安裝好app,safari打開對應的link地址就會提示(注意我手機打開提示要往上拉一下才看獲得,致使我花了大半時間確認是否配置出錯,後來才發如今上面):
其中links地址要帶上https://(看微信提示文字便可)
填入微信開放平臺對應的appid便可
初始化代碼編輯:
[WXApi registerApp:@"微信appid" universalLink:@"https://www.baidu.com"];
回掉代碼編輯:
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler { return [WXApi handleOpenUniversalLink:userActivity delegate:self]; }
注意要增長WXApiDelegate,才能回掉onResp,業務代碼就能保持不變
要測試是否全部都正常能夠調用微信sdk自檢代碼
[WXApi startLogByLevel:WXLogLevelDetail logBlock:^(NSString *log) { NSLog(@"WeChatSDK: %@", log); }];
[WXApi registerApp:@"微信appid" universalLink:@"https://www.baidu.com"];
[WXApi checkUniversalLinkReady:^(WXULCheckStep step, WXCheckULStepResult* result) { NSLog(@"step:%@, %u, %@, %@", @(step), result.success, result.errorInfo, result.suggestion); }];
以下圖所示:這表示對接成功
對接了最新sdk以後不必定能立馬去掉未驗證應用提示。 根據微信解釋以下:舊版本沒有正確接入新版OpenSDK(有分享二跳,受權登陸二次確認的狀況),新版 本剛修復這個問題。須要等新版本放量上去讓總體錯誤率降低到90%如下才會從未驗證應用中移除。
參考文檔:iOS應用出現未驗證應用的問題排查