iOS Universal Link 通用鏈接

使用場景

通過qq或者微信分享出來的H5鏈接,當(dāng)點擊H5鏈接的某個按鈕時,要實現(xiàn)如下功能:

  • 用戶未安裝APP時,跳轉(zhuǎn)到AppStore引導(dǎo)用戶安裝
  • 用戶安裝時,喚醒APP并跳轉(zhuǎn)到APP某一個指定的頁面。
    注意??:傳統(tǒng)的URL Schema實現(xiàn)存在的弊端
    • 跳轉(zhuǎn)的時候會出現(xiàn)提示框,“是夠打開XX”,用戶體驗不好。
    • 微信屏蔽URL Schema ,必須是出現(xiàn)在白名單里面才可以跳轉(zhuǎn)(意味著用戶無法在微信里面一鍵直達(dá)APP)。
      而通用鏈接可以解決上述問題
通用鏈接的介紹及優(yōu)點可以參考一下鏈接
通用鏈接的優(yōu)點
  • 安全性: 當(dāng)用戶安裝應(yīng)用程序,iOS會檢查您已經(jīng)上傳到web服務(wù)器文件,以確 保您的網(wǎng)站允許你的應(yīng)用程序能打開代表它的URL 文件,只要你創(chuàng)建并且上傳該文件,那么你的應(yīng)用和服務(wù)器之間的關(guān)聯(lián)是安全的。
  • 靈活性: 當(dāng)你的應(yīng)用程序沒有被安裝的時候,通用鏈接照樣能夠工作。當(dāng)用戶沒有安裝你的應(yīng)用程序,點擊該鏈接,將會以用戶所期望的以Safari的形式訪問
  • 私有性: 其他的應(yīng)用程序可以和你的應(yīng)用程序進行通信,不管你的應(yīng)用是夠被安裝。
  • 簡單性: 通用鏈接既能支持你的網(wǎng)站,又能支持你的應(yīng)用。
  • 獨特性: 與自定義的URL鏈接相比,通用鏈接不能被其他的應(yīng)用程序所訪問,因為它們使用的是標(biāo)準(zhǔn)的HTTP 或 HTTPS 鏈接到你的網(wǎng)站。
通用鏈接實現(xiàn)的條件
  • 有一個注冊的域名
  • 域名可通過 SSL 訪問(應(yīng)該是需要有效的證書)
  • 支持上傳一個 JSON 文件到域名
  • 至少 iOS 9 beta 2 版本
  • 至少 Xcode 7 beta 2
  • 需要真機測試,模擬器不支持通用鏈接
  • web server 需要支持 https,客戶端需要通告 https 訪問,并且不支持任何重定向
通用鏈接實現(xiàn)的操作步驟
  • 1. 開發(fā)者賬號中開啟Associated Domains域:
    進入蘋果Apple Developer --- Member Center - Certificates, Identifiers & Profiles – Identifiers - App IDs –Edit 然后開啟打鉤 Associated Domains 后保存。
  • 2. 添加Associated Domains域:
    說明:你的 APP 域名必須用 applinks: 前置它,還添加一些你可能 擁有的子域和擴展(www.domain.com, news.domain.com 等等)。
    作用:配置之后你的 APP 會自動從你的域名請求一個特殊的 JSON 文 件 apple-app-site-association。當(dāng)你第一次啟動 APP,它會從 https://domain.com/apple-app-site-association 下載這個文件。
  • 上傳 apple-app-site-association到服務(wù)器的根目錄:
    注意事項1
  • 1 paths 路徑是大小寫敏感的
  • 2 paths 內(nèi)容可以明確哪些通用鏈接是需要被處理的,哪些是不需要被處理的。
  • 3 NOT使用:為了明確不被處理的鏈接,可以增加NOT在鏈接前面
  • 4 可以使用*明確所有的網(wǎng)頁
  • 5 可以使用一個明確的URL
  • 6 可以追加到你的URL,使用匹配任何字符,使用?匹配一個字符,也可以使用和?的混搭模式。

注意事項2

  • Appid的組成部分:teamId+bundleId teamId
  • bundleId一定要和APP的bundleId一致
  • apple-app-site-association文件不能帶后綴
  • apple-app-site-association文件需要上傳到網(wǎng)站根目錄。
  • 每一個代表應(yīng)用的字典必須包含一個appid和paths,appid是teamID和bundleId,paths是一個字符串的數(shù)組。明確著你的應(yīng)用支持的通用鏈接和不支持的通用鏈接。
    列子:
    此處如果有截圖就添加,json里面的內(nèi)容。
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
    NSString *activityTypeStr = userActivity.activityType;
    if ([activityTypeStr isEqualToString:NSUserActivityTypeBrowsingWeb]) {
        NSURL *webUrl = userActivity.webpageURL;
        if ([webUrl.host isEqualToString:@"baidu.com"] ) {
            //打開對應(yīng)頁面
        } else {
            //不能識別safari打開
            [[UIApplication sharedApplication] openURL:webUrl];
        }
    }
}
在APP中處理通用鏈接

如果有截圖再替換

參考資料

https://developer.apple.com/ios/download/
http://www.cocoachina.com/ios/20150902/13321.html
http://www.itdecent.cn/p/c2ca5b5f391f
http://strivingboy.github.io/blog/2015/09/27/ios9
http://help.tune.com/marketing-console/ios-universal-links-with-tune/
http://stackoverflow.com/questions/33391615/ios-9-universal-links-dont-work
http://www.jackivers.me/blog/2015/9/17/list-of-universal-link-ios-9-apps

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

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

  • 什么是通用鏈接: ??通用鏈接是iOS9推出的一項新功能,如果你的應(yīng)用(app)支持通用鏈接(Universal ...
    大佐100閱讀 866評論 0 0
  • 什么是Universal Link Universal Link是蘋果在WWDC 2015上提出的iOS 9 的新...
    JQWONG閱讀 6,989評論 1 7
  • 說明 此系列共有兩篇文章, 如需要實現(xiàn)微信跳轉(zhuǎn)到app功能, 閱讀過此篇文章后, 可再查看此文章: iOS Uni...
    cyh老崔閱讀 7,853評論 1 7
  • 場景: 用戶通過點擊鏈接直接跳轉(zhuǎn)到APP (沒有提示),如果手機沒有安裝app會選擇瀏覽器打開(系統(tǒng)自己會判斷是否...
    _禿頭少女_閱讀 1,041評論 0 1
  • 當(dāng)您支持通用鏈接時,iOS用戶可以點擊鏈接到您的網(wǎng)站,并無縫地重定向到已安裝的應(yīng)用程序,而無需通過Safari。如...
    robin2005閱讀 7,099評論 0 2

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