背景:
2020年3月20日起微信對(duì)舊版本 SDK 發(fā)起的分享增加“未驗(yàn)證應(yīng)用”安全提示资厉。所以導(dǎo)致很多用戶分享的時(shí)候厅缺,會(huì)提示未驗(yàn)證應(yīng)用蔬顾。
資料:
微信開放平臺(tái)的文檔:
https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/iOS.html
問題排查文檔:
https://docs.qq.com/doc/DZHNvSGJLS3pqbHNl?tdsourcetag=s_macqq_aiomsg
我的app的背景:
app微信分享接的友盟宴偿,其中用的是微信的精簡(jiǎn)版。登錄用的微信官方平臺(tái)的最新sdk1.8.7.1诀豁,分享的時(shí)候就會(huì)遇到應(yīng)用未驗(yàn)證的情況窄刘。
開始解決問題:
創(chuàng)建一個(gè)文件命名一定要是apple-app-site-association,文件不能有后綴舷胜。文件內(nèi)容如下圖:
其中"wechat"可以根據(jù)自己需求來寫(實(shí)際上可以任意寫為了區(qū)分多個(gè)app的)娩践。上述兩個(gè)ID,可以在蘋果開發(fā)者中心查找烹骨,具體位置如下圖翻伺,順便將Associated Domains選中。
保存文件沮焕,然后把文件放到服務(wù)器的根目錄中(可讀和下載狀態(tài)都可以)吨岭。
2.配置項(xiàng)目
在開發(fā)者中心我們已經(jīng)開啟了Associated Domains,也要在xocode里面開啟峦树。targets->signing&capabilities->+capability->Associated Domains辣辫。然后Domins點(diǎn)擊加號(hào)填入相應(yīng)內(nèi)容,內(nèi)容格式為applinks:+ App的域名 (例如:applinks:wangyi.com魁巩,App域名實(shí)際上就是在微信開放平臺(tái)設(shè)置的Universal Link的域名)急灭。
3.配置微信開發(fā)平臺(tái)信息
微信開放平臺(tái)Universal Link要設(shè)置,App的域名(例如https://wangyi.com/wechat/)谷遂。
4.項(xiàng)目plist文件
sdk要求加上weixinULAPI葬馋。
5.增加新方法
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler{
? ? if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
? ? ? ? NSURL*webUrl = userActivity.webpageURL;
? ? ? ? NSLog(@"continueUserActivity:%@",webUrl);
? ? }
? ? //當(dāng)APP被UniversalLink調(diào)起后,
? ? BOOL ret = [WXApi handleOpenUniversalLink:userActivity delegate:self];
? ? return ret;
}
檢測(cè)是否配置成功
1.先檢測(cè)Universal Link是否配置成功。
上述四步配置好后畴嘶,卸載app扫尖,然后重新跑一下項(xiàng)目。這時(shí)會(huì)重新下載apple-app-site-association文件掠廓。然后打開safari换怖,輸入U(xiǎn)niversal Link+(隨便寫)(如https://wangyi.com/wechat/aaa),然后下拉一下打開的網(wǎng)頁(yè)蟀瞧。
當(dāng)出現(xiàn)這個(gè)條目沉颂,并且點(diǎn)擊打開的時(shí)候能跳轉(zhuǎn)到自己的app,說明Universal Link配置成功了悦污。
2.檢測(cè)Universal Link是否認(rèn)證成功
在注冊(cè)微信的方法后調(diào)用自檢函數(shù)
[WXApi checkUniversalLinkReady:^(WXULCheckStep step, WXCheckULStepResult* result) {
? ? ? ? NSLog(@"wechatSdkre %@, %u, %@, %@", @(step), result.success, result.errorInfo, result.suggestion);
? ? }];
如果自檢函數(shù)能走到第6步铸屉,說明認(rèn)證成功。
如果授權(quán)登錄沒有二次彈框確認(rèn)切端,分享除首次外不會(huì)二跳 (二跳和二次確認(rèn)如下圖)
如果到這里彻坛,分享還是顯示未驗(yàn)證應(yīng)用的話,只有等待了踏枣。
ps:本人都配置好昌屉,并且驗(yàn)證Universal Lin通過了,但是分享還是顯示 未驗(yàn)證應(yīng)用茵瀑。等了三天后间驮,我把友盟的微信分享刪了,代碼里改成了微信sdk的分享马昨,第二天中午再次分享的時(shí)候竞帽,未驗(yàn)證應(yīng)用消失了。
可能有寫的不清楚或者錯(cuò)誤的地方鸿捧,請(qǐng)大家指正屹篓。謝謝。如果有不懂的地方可以留言匙奴。
可能需要的一些知識(shí):
https://app-site-association.cdn-apple.com/a/v1/app的域名(https://app-site-association.cdn-apple.com/a/v1/wangyi.com)可以訪問到上傳的文件內(nèi)容堆巧,有內(nèi)容說明能訪問到,但是注意??上傳文件后饥脑,再修改恳邀,可能你會(huì)發(fā)現(xiàn)還是通過不了,可能因?yàn)樘O果服務(wù)器有緩存灶轰。