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

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

1:Universal Links

  要對接最新的微信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

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 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因此這塊內容不作深究,有興趣的小夥伴能夠研究一下

  • 配置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下載

相關文章
相關標籤/搜索