iOS 9的 Universal Links 通用鏈接使用介紹

一、 通用鏈接介紹

  Apple 推出通用鏈接:一種能夠方便的通過傳統 HTTP 鏈接來啓動 APP, 使 用相同的網址打開網站和 APP。

  當你的應用支持通用鏈接,iOS9 之後 , 用戶可以點擊一個鏈接跳轉到你的網站,並獲得無縫重定向到您安裝的應用程序,而無需通過 Safari 瀏覽器。如果你的應用不支持的話,點擊鏈接將會用 Safari 來打開。 


二、通用鏈接的優點

    通用鏈接比自定義的URL鏈接有幾處尤爲突出的好處,具體來說,通用鏈接:

獨特性:與自定義的URL鏈接相比,通用鏈接不能被其他的應用程序所訪問,因爲

               它們使用的是標準的HTTP HTTPS 鏈接到你的網站。

安全性:當用戶安裝應用程序,iOS會檢查您已經上傳到web服務器文件,以確

               保您的網站允許你的應用程序能打開代表它的URL 文件,只要你創建並且上傳該

     文件,那麼你的應用和服務器之間的關聯是安全的。

靈活性:當你的應用程序沒有被安裝的時候,通用鏈接照樣能夠工作。當用戶沒有

               安裝你的應用程序,點擊該鏈接,將會以用戶所期望的以Safari的形式訪問。 

簡單性:通用鏈接既能支持你的網站,又能支持你的應用

私有性:其他的應用程序能和你的應用程序通信,不管你的應用是否被安裝。 


傳統例子:

傳統的密碼重置流程是這樣的:
    1, 您忘記了密碼,讓你點擊
忘記密碼按鈕,在應用程序l 輸入您的電子郵件,並點擊下一步
    2, 請檢查您的電子郵件,點擊重置密碼鏈接
    3, Safari中的密碼重置頁面打開
    4, 您輸入新密碼並保存
    5, 切換回應用程序,並登錄使用表示新密碼 


使用通用鏈接後:

       隨着通用的鏈接,我們可以從過程中完全刪除 Safari 瀏覽器。 現在,用戶可以重新 設置在應用程序的密碼,允許應用程序來複位後也自動登錄他們進來。 這是所有可能 的同時還具有重置密碼的電子郵件的安全性,以確認身份。

  它可以被用來大大提高以前煩人的工作流程的用戶體驗。 

視頻演示:http://t.cn/R4pxxB5 (利用“通用鏈接”改善“密碼重置功能) 


使用通用鏈接後有四種打開方式效果:

第一種:安裝客戶端後點擊鏈接(檢測應用是否安裝,如果安裝直接打開應用) 

第二種:長按鏈接選擇 Safari 中打開

第三種:長按鏈接選擇在 XXX 中打開

第四種:刪除應用後點擊鏈接(檢測應用是否安裝,如果沒有安裝在 Safari 中 打開網址) 


三、 通用鏈接的關鍵實現條件 

  • 有一個註冊的域名

  • 域名可通過 SSL 訪問(應該是需要有效的證書)

  • 支持上傳一個 JSON 文件到域名

  • 至少 iOS 9 beta 2 版本

  • 至少 Xcode 7 beta 2

  • 需要真機測試,模擬器不支持通用鏈接

  • web server 需要支持 https,客戶端需要通告 https 訪問,並且不支持任何重定向 


四、 通用鏈接實現步驟 


1, 開啓 Associated Domains 域: 

    進入蘋果Apple Developer --- Member Center - Certificates, Identifiers & Profiles – Identifiers - App IDs –Edit 然後開啓打鉤 Associated Domains 後保存。 

wKioL1aUntixyjoQAACkJBawYLA561.png

2, 添加 Associated Domains 域: 

   說明:你的 APP 域名, 必須用 applinks: 前置它:還添加一些你可能 擁有的子域和擴展(www.domain.com, news.domain.com 等等)。

   作用:配置之後你的 APP 會自動從你的域名請求一個特殊的 JSON 文 件 apple-app-site-association。當你第一次啓動 APP,它會從 https://domain.com/apple-app-site-association 下載這個文件。 

   操作:項目 targets->Capabilities->Associated Domains 

wKioL1aUnxmQmwMwAADmz-ozCd0626.png


3, 上傳 apple-app-site-association 文件到服務器的根目錄: 


注意事項(1)

1, paths 路徑是大小寫敏感的
2, paths 內容可明確哪些通用鏈接需要被處理,哪些不需要
3, NOT 使用:爲了明確指出不被處理的鏈接,可增加 “NOT”在鏈接
前面

例 如 "paths": [ "/wwdc/news/", "NOT /videos/wwdc/2010/*", "/videos/wwdc/201?/*"]

4, 你可以使用 * 明確所有的網頁
5, 也可以使用一個明確的的 URL,例如 /wwdc/news/
6, 也可以追加 * 到你的 URL ,例如 /videos/wwdc/2015/* 也可以使用 * 來匹配任何字符,使用 ? 來匹配一個字符,可以在路徑 中使用這種混搭的形式, 例如 /foo/*/bar/201?/mypage
 

注意事項(2)

1, “appID”組成部分:TeamID + BundleId TeamID
2, BundleId 一定要和 APP 的 BundleId 一致。
3, apple-app-site-association 文件不能帶後綴
4, apple-app-site-association 文件需要上傳到網站根目錄
5, 每一個代表着應用的 字典,必須包含一個 appID 和 paths, appID 是
teamID 和 bundleID,paths 是一個字符串的數組 明確着你的應用支持的通用鏈接和你的應用程序不支持的通用連接內容。

6, 內容如下例子

{
  "applinks": {
    "apps": [],
    "details": {
      "TBEJCS6FFP.com.domain.App": {
        "paths":[ "*" ]
      }
    }
  }
}


4, 在 APP 裏處理通用鏈接: 

例子:

爲了在 APP 裏支持通用鏈接, 你需要在 AppDelegate 裏實現[application(_:continueUserActivity:restorationHandler:)]。 

wKiom1aUn2ey90SoAAE2OLBb4KI250.png


部分參考資料:
https://developer.apple.com/ios/download/ (AppleDeveloper)

http://www.cocoachina.com/ios/20150902/13321.html (Cocoachina)

http://www.jianshu.com/p/c2ca5b5f391f  (subvertwuxu 簡書)

http://strivingboy.github.io/blog/2015/09/27/ios9 (github blog)

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 (jack blog)

http://help.tune.com/marketing-console/ios-universal-links-with-tune/ 

有什麼錯誤歡迎大家補充。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章