IOS 微信1.8.7對接以及Universal Links詳細說明(微信未驗證應用解決辦法)


  最近微信對老版本sdk開始限制部分功能,分享、第三方登錄、支付等功能都會出現未驗證應用,所以不得不更新最新版本sdk,下面就主要介紹對接最新版本的坑,主要是Universal Links這方面(主要是不了解)。

1:Universal Links

  要對接最新的微信sdk,你必須要了解一下Universal Links是什么,因為最新sdk根據Universal Links來判斷來源app是否可信。

  IOS主流跳轉方案有兩種:

    1:Scheme

    2:Universal Links

  Scheme的協議是由開發者完全自定義,同時訪問失敗沒有任何內容可以展現,所以IOS9就引入Universal Links。Universal Links 是通過域名下apple-app-site-association來確定app,因為域名又必須是https又不會重復,還能當作地址來訪問網頁,解決了上述兩個問題。

2:配置Universal Links

  • 配置apple-app-site-association

  首先你要創建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 id

  teamid不知道在哪里的小伙伴,參考下圖(bundle id我就不做贅述了 不知道的小伙去面壁思過)

 

 

 

  json中path是干什么用的:

    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所以這塊內容不做深究,有興趣的小伙伴可以研究一下

  • 配置Associated Domains

  在蘋果開發者賬號里面勾選對應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地址就會提示(注意我手機打開提示要往上拉一下才看得到,導致我花了大半時間確認是否配置出錯,后來才發現在上面):

3.配置微信sdk相關

  • 在微信開放平台配置Universal links

 

 

 

其中links地址要帶上https://(看微信提示文字即可)

  • 配置Url Type

 

 

填入微信開放平台對應的appid即可

  • 配置Info

 

 

4.微信代碼編輯

初始化代碼編輯:

[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); }];

 

如下圖所示:這表示對接成功

 

 

5:注意事項

  對接了最新sdk之后不一定能立馬去掉未驗證應用提示。 根據微信解釋如下:舊版本沒有正確接入新版OpenSDK(有分享二跳,授權登錄二次確認的情況),新版 本剛修復這個問題。需要等新版本放量上去讓整體錯誤率下降到90%以下才會從未驗證應用中移除。

  參考文檔:iOS應用出現未驗證應用的問題排查

       微信IOS接入指南

       微信IOS SDK下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM