關(guān)于iOS13升級微信SDK適配UniversalLink原理和步驟

一.微信官方文檔說明

關(guān)于openSDK1.8.6的更新說明

由于蘋果iOS 13系統(tǒng)版本安全升級,為此openSDK在1.8.6版本進(jìn)行了適配。 1.8.6版本支持Universal Links方式跳轉(zhuǎn),對openSDK分享進(jìn)行合法性校驗(yàn)。

*建議開發(fā)者接入新版本SDK, 覆蓋測試微信7.0.7或以上版本、iOS12或13,以驗(yàn)證所使用的接口的功能性和可用性。

不管你是友盟還是ShareSDK等等,只要是最新版的應(yīng)該都需要這個(gè)參數(shù),即使你的APP目前跳轉(zhuǎn)微信沒問題也,強(qiáng)烈建議趁早適配此方案,因?yàn)樵谧钚耰OS系統(tǒng)和微信版本上可能出現(xiàn)無法調(diào)起微信的情況!
微信更新1.8.6的SDK后,在delegate注冊時(shí)多了一個(gè)universalLink參數(shù)(如下):

+ (BOOL)registerApp:(NSString *)appid universalLink:(NSString *)universalLink;

二.什么是UniversalLink

UniversalLink顧名思義(通用鏈接)與URL Schemes一樣,都是跳轉(zhuǎn)APP的一種方式。
簡單來說就是一個(gè)URL,當(dāng)用戶在瀏覽器中訪問此URL時(shí),蘋果會檢測對應(yīng)的APP是否已安裝。
已安裝則跳轉(zhuǎn)到APP。
未安裝則訪問此URL實(shí)際內(nèi)容。

為什么要用它呢?

微信之前是用URL Schemes方式跳轉(zhuǎn)APP,在微信7.0.7版本和微信SDK1.8.6更新后,為了安全性等原因,改用universalLink方式。更新之后就必須用這種方式,要是不填universalLink,不管是分享、支付、登錄都無法調(diào)起微信。
這里有幾篇蘋果官方文檔的解釋,使用谷歌瀏覽器翻譯一下就好了,文章都不長,強(qiáng)烈建議都認(rèn)真看一圈。我也是反復(fù)讀了很多遍后才理解這玩意的。
支持通用鏈接
允許應(yīng)用程序和網(wǎng)站鏈接到您的內(nèi)容
啟用通用鏈接
處理通用鏈接

三:配置UniversalLink的步驟

總體來說步驟還是比較多的,但其實(shí)都很簡單,主要是要注意很多細(xì)節(jié)的東西,大概步驟如下(順序不分前后)

1、讓后臺人員準(zhǔn)備一個(gè)https的鏈接,一定要https的(微信硬性要求)

2、制作apple-app-site-association文件,并放置在準(zhǔn)備好的鏈接根目錄下

3、App Store應(yīng)用管理和Xcode開啟Associated Domains,并填寫對應(yīng)Domains

4、用GET請求測試該鏈接下的文件內(nèi)容,并在safari瀏覽器中測試

5、微信開放平臺和SDK注冊方法填寫相同UniversalLink

6、填寫微信新的LSApplicationQueriesSchemes

7、回調(diào)測試

四:步驟詳解

1.為什么要準(zhǔn)備https的鏈接?其實(shí)蘋果是支持http和https,但是微信要求是這樣,這一步交給你的服務(wù)器人員去完成。
2 制作apple-app-site-association文件,并放在準(zhǔn)備好的鏈接根目錄下。請先看看蘋果官方的解釋(如下圖)


WechatIMG115.png

大致意思就是蘋果會在APP第一次安裝啟動時(shí)(僅第一次),訪問你準(zhǔn)備的鏈接下面此文件。(這里蘋果其實(shí)會訪問兩次,第一次是.well-known子目錄下,第二次才是根目錄)

注:該文件若改動過,建議卸載重新安裝,蘋果重新主動請求

一般放在根目錄下即可,若你的鏈接有重定向,建議嘗試放置在.well-known子目錄下,并且保證能GET請求到此文件,且文件不需要后綴名。

例如:以https://help.wechat.com為基礎(chǔ)鏈接,則該文件請求路徑為
https://help.wechat.com/apple-app-site-association
https://help.wechat.com/.well-known/apple-app-site-association

那么此文件的內(nèi)容是什么呢?還是來看看官方的解釋

其實(shí)就是一個(gè)json,apps數(shù)組不用管,details里面填入對應(yīng)得appID和paths。

appID就是用前綴(Team ID)+bundleID的方式,在App Store應(yīng)用后臺可以查看此前綴


開發(fā)者賬號后臺.png

paths則是可訪問APP的對應(yīng)頁面路徑,APP Delegate有對應(yīng)方法可以獲取,更多關(guān)于paths的介紹這里不做過多撰述,下面有個(gè)例子,替換APPID和BundleID即可復(fù)制直接使用。

{
    "applinks": {
        "apps": [

        ],
        "details": [{
                "paths": ["*"],
                "appID": "TeamId.bundleId"
            },
            {
                "paths": ["*"],
                "appID": "TeamId.其他環(huán)境的bundleId"
            }

        ]
    }
}

ok,到這里apple-app-site-association文件就制作好了,把它交給你的后臺人員,按照之前說的放到相應(yīng)目錄。并且使用GET請求進(jìn)行測試,確保路徑能正常訪問,json格式正確-_-!,如圖


Pasted Graphic 2.png

Pasted Graphic 3.png

3.去App Store應(yīng)用管理開啟Associated Domains


WechatIMG123.png

啟用Xcode-Capabilities中的Associated Domains,以applinks:+你準(zhǔn)備的UniversalLink的形式填寫對應(yīng)值。例如:applinks:help.wechat.com,注意此次應(yīng)是裸的域名,不要加https或者文件名


WechatIMG124.png

4.一切就緒后即可在safari瀏覽器中測試。
卸載一次APP,build run一下,然后你就可以先在safari瀏覽器中測試走一波,把鏈接地址輸入進(jìn)去如https://help.wechat.com。頁面加載完往下拉一下,看是否有打開APP的提示,如果有則配置成功!

WechatIMG125.png

5.以上步驟與微信毫無關(guān)系,但證明UniversalLink已經(jīng)配置成功,可進(jìn)行APP跳轉(zhuǎn)。
接下來是微信開放平臺和SDK注冊方法填寫相同UniversalLink,注意此次微信的要求https開頭 /結(jié)尾,列如:https://help.wechat.com/

WechatIMG126.png

同理,在微信SDK注冊方法中不管是友盟還是shareSDK填寫的都應(yīng)該和這個(gè)一樣
//微信注冊
[WXApi registerApp:wxID universalLink:@"https://help.wechat.com/"];
6.也許這個(gè)時(shí)候你迫不及待想去調(diào)起微信,結(jié)果一定是失敗的,因?yàn)榇舜胃潞?,還要添加一個(gè)新的Schemes。

在Xcode中,在 “info”標(biāo)簽欄的“LSApplicationQueriesSchemes“添加weixin 和weixinULAPI(如下圖所示)。


WechatIMG127.png

7.回調(diào)測試
當(dāng)APP被UniversalLink調(diào)起后,可以在delegate中使用如下方法進(jìn)行對應(yīng)處理,獲取相關(guān)paths信息等(這里使用了微信的處理方式)注:UniversalLink調(diào)起不執(zhí)行application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options:等方法,而執(zhí)行如下方法。

  • (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRest
    oring>> * __nullable restorableObjects))restorationHandler {
    return [WXApi handleOpenUniversalLink:userActivity delegate:self];
    }
    五、總結(jié)

配置的過程請一定要仔細(xì),大致可分為2個(gè)階段。
一、優(yōu)先完成safari中測試,能提示打開APP
二、再配置微信相關(guān)內(nèi)容
填寫注意的地方:
假設(shè)你的鏈接是:https://help.wechat.com
GET請求地址應(yīng)為
https://help.wechat.com/apple-app-site-association
https://help.wechat.com/.well-known/apple-app-site-association
Xcode-Associated Domains中應(yīng)為
help.wechat.com
safari中測試應(yīng)為
https://help.wechat.com
微信開放平臺填寫的和注冊方法時(shí)應(yīng)為
https://help.wechat.com/

溫馨提示:

如果沒有條件自己配置apple-app-site-association文件,可以直接到shareSDK等平臺后臺->分享設(shè)置 去配置UniversalLink信息。

做完這些后,應(yīng)該就可以成功調(diào)起微信了,如果還有什么特殊的需求,建議多仔細(xì)閱讀蘋果官方文檔,和微信更新的文檔。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容