iOS 9 的新功能 universal links

什麼是 universal links: (通用連接) 一種可以方便的經過傳統 HTTP 連接來啓動 APP, 使用相同的網址打開web page和 APP的方式。前端

第一點,連接打開網址 顧名思義web

第二點,連接打開app, 一般 咱們都會用 url scheme(schema)  就是 在info 中 能夠配置幾個目標需求app的 一個 schema (關鍵key 惟一應用標識),而後使用 openUrl 方法打開. 這裏用 連接打開.  安全

緣由: (1)schema 方式容易暴露用戶數據:若是有人拿到 schema 利用 AppDelegate 裏面 canOpenURL:方法  就能夠知道 用戶手機裏面 都安裝了啥 ,  我也不知道  爲何有這麼多人會取巧 用在了 外門邪道,固然 蘋果疾惡如仇 , 在iOS9裏面 對該策略有了限制,不能 用 跑代碼的方式來檢測 用戶APP安裝使用狀況了 服務器

        (2)schema 容易重複: 極可能 沒有交集的兩個開發團隊 取了相同的 url scheme 名字,而後 iPhone本身蒙圈了,到底該怎麼辦,而後手機default狀態 沒有任何處理 ,接着用戶就會不知道該幹啥: 「我剛剛不是點了那個按鈕麼,這個手機卡住了仍是怎麼着 沒反應呢」?微信

        (3)universal links 不只僅能解決以上兩個問題 (沒錯 更安全 不怕信息泄漏 有人再檢測 你手機app列表了, 域名惟一了),並且 是上下文連接緊密的,你能夠直接跳轉已經安裝的app或者 跳轉去下載這個應用 或者其餘 的連接什麼的app

服務端操做:         ide

這個 universal links 須要服務端的小夥伴 幫忙處理一下,註冊一個域名,好比http://xxxx.com 做爲咱們的universal link.測試

(1)首先須要購買SSL證書,爲了 使用 SSL經過 get 請求訪問到訪問域名(以及下面的JSON)url

(2)而後配置一些服務spa

「支持上傳一個 JSON 文件到你的域名」 :這個須要在服務器的根目錄下面,添加文件名爲apple-app-site-association(沒有後綴)的一個文件,而後在裏面添加上以下的內容:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "XXXXXXXX",
                "paths": [
                    "/videos/\*"
                ]
            }
        ]
    }
}

關鍵 是 appId  是 開發者帳號的 teamId 和 app的bundleId 拼成的 例如:

teamId +  「.」 + bundleId  拼寫成的字符串

客戶前端操做:

註冊你的App,使其可以處理universal links

須要在 Xcode 的 capabilities 裏 添加你的 app 域名, 必須使用 「applinks:」做爲前綴還添加一些你可能擁有的子域和擴展(www.xxxx.com, tests.xxxx.com 等等)。

 

而後就能夠用 目標連接 放在 safari 裏 測試 看看能不能跳轉應用 ,或者 去下載應用了.

有相似的第三方,使用集成的方式 ,不須要咱們域名的問題,只須要 提供 teamId, 而後爲咱們生成一個」短連接」,把這個連接 放在微信 或者  safari裏 就能夠一鍵跳轉應用 或者提示去下載應用了.

而後 根據需求 是打開頁面 仍是怎麼的處理方法

 

由於 這個iOS9的新特性麼,,若是 你還要支持 相對比較低的版本 必定要有預判斷, 否則 會致使crash.  而且 頗有可能 蘋果 不測試這種問題 ,你的應用就上線了,等用戶受影響了才反應過來.還得加急從新打包

都是血淚經驗: 咱們項目 使用 iOS9 font 而後仍然有至關一部分 iOS7的用戶反饋 開啓就閃退.沒招  咱們好多用戶都鍾情低版本 不肯意升級. 而後 咱們緊急 修復這個問題 從新上架.(蘋果 根本沒審覈低版本系統好吧~)

備註: 測試拿真機 ,  模擬器 很差使

相關文章
相關標籤/搜索