iOS9通用鏈接備忘

通用鏈接的作用是將網(wǎng)站和App建立聯(lián)系,通過點(diǎn)擊http鏈接打開App
以下是幾篇不錯(cuò)的文章,照著做。等實(shí)際做的時(shí)候再添加過程和填坑過程。
One URL works for both your website and your app.
Apple 推出通用鏈接:一種能夠方便的通過傳統(tǒng)HTTP鏈接來啟動(dòng)APP, 使用相同的網(wǎng)址打開網(wǎng)站和 APP。

主要工作

  • 添加域名到 Capabilities
  • 上傳 apple-app-site-association 文件
  • AppDelegate 里處理通用鏈接
  • 開發(fā)者網(wǎng)站打開Associated Domains功能
    開發(fā)者中心->Identitiers->App IDs->需要支持的應(yīng)用App ID
  • 添加功能之后,Provisioning Profile需要重新生成并更新一下,因?yàn)?code>entitlement文件增加內(nèi)容了,需要更新到證書里面

主要原理

如果支持通用鏈接(比如iOS9,并且把這個(gè)功能打開了),當(dāng)用戶點(diǎn)擊了通用鏈接后,iOS系統(tǒng)會(huì)啟動(dòng)App,并且APPDelegate中的代理函數(shù)application:continueUserActivity:restorationHandler:會(huì)被調(diào)用。NSUserActivity * 類型的參數(shù)userActivity的屬性activityType的值為NSUserActivityTypeBrowsingWeb,這樣就可以判斷這次的啟動(dòng)是用戶通過點(diǎn)擊通用鏈接而過來的。對(duì)于iOS9以前的不支持通用鏈接的系統(tǒng),這里不會(huì)進(jìn)來。
另外,URL信息,通過userActivity的屬性webpageURL傳遞過來。根據(jù)這個(gè)URL,可以跳轉(zhuǎn)本地的頁面,或者像以前一樣,調(diào)用Safari顯示網(wǎng)頁,具體操作就根據(jù)URL的編碼約定了。

// 通用鏈接
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
    // 用戶點(diǎn)擊通用鏈接,導(dǎo)致APP啟動(dòng),會(huì)進(jìn)到這個(gè)里面
    if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
        NSURL *url = userActivity.webpageURL;
        if (nil == url) {
            return YES;
        }
        if ([url.host isEqualToString:@"domain.com"]) {
            // 是目標(biāo)鏈接,調(diào)用Native代碼,打開對(duì)應(yīng)的頁面
        } else {
            // 不是目標(biāo)鏈接,用Safari打開
            [[UIApplication sharedApplication] openURL:url];
        }
    }
    return YES;
}

參考文章

iOS 9學(xué)習(xí)系列:打通 iOS 9 的通用鏈接(Universal Links)

iOS9 Universal Links (通用鏈接)

iOS 9 通用鏈接(Universal Links)

Support Universal Links

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

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

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