昨天領導反饋app微信分享到朋友圈出現“未驗證應用”的提示信息。通過追蹤找到了解決辦法。
問題的原因
由于蘋果iOS 13系統版本安全升級,為此openSDK在1.8.6版本進行了適配。 1.8.6版本支持Universal Links方式跳轉,對openSDK分享進行合法性校驗。
PS:現在openSDK出了最新的版本1.8.7,新增了自檢函數checkUniversalLinkReady:,可以幫助開發者排查SDK接入過程中遇到的問題,在哪一步出錯了(共7步,見接入文檔https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/iOS.html#jump4)。
問題的解決辦法
1.配置Universal Links
1)常見并編輯一個名為apple-app-site-association,無需后綴名,務必符合標準的json格式,格式如下:
{
? "applinks": {
"apps":[],
"details": [
? {
"appID": "你的app的teamID + Bundle Identifier",
"paths": ["*"]
? }
]
? }
}
2)將apple-app-site-association文件發給服務器端的同事,讓他上傳到域名的根目錄下或者.well-known的子目錄下(這里的域名必須要是可訪問的域名,由服務器端的同事給到)。
2.在app里面配置通用鏈接
1)首先檢查一下Xcode-Targets-Signing&Capabilities 是否有Associated Domains,如果沒有,需要去開發者賬號在identifer里選擇跟當前Xcode所用bundle identifier相同的那一組,進去之后,將Associated Domains前面的方框打上勾,如果已經打勾了,配置如下:
2)實現AppDelegate里支持通用鏈接的實現方法
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void?(^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
? return?[WXApi handleOpenUniversalLink:userActivity delegate:self];
}
3)修改微信注冊方法
由[WXApi registerApp:kAppid]改為[WXApi registerApp:kAppid universalLink:kUniversalLinks],這里的universal links為第一步第2)里服務器同事給的鏈接地址
4)配置info.plist
這里如果是從舊版更新WechatOpenSDK1.8.6/7版本的話,需要在這個里面調用微信里的這個方法,并且在Xcode中,選擇你的工程設置項,選中“TARGETS”一欄,在 “info”標簽欄的“LSApplicationQueriesSchemes“添加weixin和weixinULAPI
5) 微信開放平臺配置Universal links
需要把服務器同事給的地址填寫到app iOS信息Universal Links,同時app的下載地址也一定要填寫app在app store的地址,填寫好后保存,開放平臺需要審核,可能要等一段時間Universal Links才能生效,我就是昨天下午設置好沒生效,今天早上來才生效。
3.檢查是否配置好的Universal links是否生效
生效的標準結合這兩個文檔https://docs.qq.com/doc/DZHNvSGJLS3pqbHNl的步驟和https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/iOS.html#jump4提供的自檢過程
4.如果以上步驟都已經完成,并且自檢正確,再分享出去,就不會再出現“未驗證的應用”字樣了。
PS:上周五(8-7)按照上述步驟,不會出現“未驗證的應用”字樣,到了周一(8-11)分享,發現又會出現,本人手機系統iOS13.5.1,微信7.0.14;換了同事的手機iOS13.1.2,微信7.0.14發現她的就正常,這個問題需要持續關注,個人覺得是微信sdk的bug;打包上線后,等到用戶用一段時間后,新版本放量上去讓整體錯誤率下降到90%以下才會從未驗證應用中移除,問題得到徹底解決。