微信官方聲明:
openSDK1.8.6 由於蘋果iOS 13系統版本安全升級,爲此openSDK在1.8.6版本進行了適配。 1.8.6版本支持Universal Links方式跳轉,對openSDK分享進行合法性校驗,提升使用過程中的安全性。 我們建議開發者使用新版本SDK測試時,覆蓋測試微信7.0.7版本、iOS12以及蘋果新推出的iOS13,以驗證所使用的接口的功能性和可用性。
背景
隨着iOS13系統的正式推送,各家第三方SDK都對其或多或少進行了更新適配,但在微信SDK更新後,導致APP突然不能跳轉微信進行登錄和分享了,本篇文章是適配踩坑之作,供參考。
2019/09/29更新
經過嘗試,不知道微信的SDK是怎麼更新的,好像並不需要Universal Links
支持就可以,大家可嘗試一下步驟,如不行繼續往下看即可:
- 註冊時填入“https://”即可(
注意:經過嘗試,這裏的universalLink必須和微信後臺填入的一致,直接這樣填是不可行的,只是單純能調起微信,無法分享和登錄,建議大家還是按下面步驟來操作吧
)
[WXApi registerApp:@"xxx" universalLink:@"https://"];
- 在Xcode中,選擇你的工程設置項,選中“TARGETS”一欄,在 “info”標籤欄的“LSApplicationQueriesSchemes“添加weixin 和weixinULAPI(如
0x1
所示) - 在微信後臺配置Universal Links,鏈接符合要求即可。
以上步驟若仍不能解決跳轉微信問題,可繼續看如下的踩坑之旅。
環境
Xcode10.1
,iOS12.4
0x1
更新SDK1.8.6後,微信的API發生了少許變更,其中註冊的API需要傳一個Universal Links
,因爲我們的APP並不需要支持,所以想着直接傳了nil
,如下:
[WXApi registerApp:@"xxx" universalLink:nil];
按照新API更改編譯通過、運行。發現不能微信登錄和分享。點擊後無法跳轉微信,且報錯如下:
-canOpenURL: failed for URL: "weixinULAPI://" - error: "This app is not allowed to query for scheme weixinulapi"
回看一下微信的文檔發現,可能需要進行這樣的配置:
按此配置完成後,仍然不能跳轉,且報錯:
-canOpenURL: failed for URL: "weixinULAPI://" - error: "The operation couldn’t be completed. (OSStatus error -10814.)"
但是官方文檔並沒有此錯誤編號-10814
,陷入了沉思。
0x2
仔細閱讀微信聲明的更新文案後,想着,難道必須支持Universal Links
纔行嗎?嘗試配置試試看。參考了其他博主配置步驟:
其實上面博主寫得已經挺明確了,但是中間還是遇到一些問題,這裏我貼出我的配置供大家參考:
apple-app-site-association
文件
Xcode配置
有兩點原因使我想着自己暫時把apple-app-site-association
文件上傳到阿里雲進行測試
- 自己測試不想麻煩後臺幫忙傳
- 阿里雲的OSS支持https,而我們測試服不支持https,還得拿證書去配置,麻煩
Universal Links
配置OK後,嘗試了,能直接跳到我們的APP了,所以至此我們的APP已經支持Universal Links
。
0x3
在微信後臺配置Universal Links
,以爲需要審覈,然而並不用,直接生效了。這裏的鏈接有要求,已/
結尾
最終配置:
最後
修改微信註冊API,運行嘗試看此方法的返回值是不是YES
。只有返回YES
纔算OK,如還不行,可能微信後臺有延遲,因爲它說它會進行比對的。過幾分鐘再嘗試,應該問題不大了
[WXApi registerApp:@"xxx" universalLink:@"你的微信後臺配的Universal Links"];
到這裏,你已經成功完成了微信openSDK1.8.6對iOS13系統的適配工作。微信登錄和分享功能已正常。恭喜?
如你在此過程中仍然遇到一些問題,歡迎郵件聯繫我,我們一起交流討論