iOS 9 的新功能 universal links
什么是 universal links: (通用鏈接) 一種能夠方便的通過傳統 HTTP 鏈接來啟動 APP, 使用相同的網址打開web page和 APP的方式。
第一點,鏈接打開網址 顧名思義
第二點,鏈接打開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或者 跳轉去下載這個應用 或者其他 的鏈接什么的
服務端操作:
這個 universal links 需要服務端的小伙伴 幫忙處理一下,注冊一個域名,比如http://xxxx.com 作為我們的universal link.
(1)首先需要購買SSL證書,為了 使用 SSL通過 get 請求訪問到訪問域名(以及下面的JSON)
(2)然后配置一些服務
“支持上傳一個 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的用戶反饋 開啟就閃退.沒招 我們好多用戶都鐘情低版本 不愿意升級. 然后 我們緊急 修復這個問題 重新上架.(蘋果 根本沒審核低版本系統好吧~)
備注: 測試拿真機 , 模擬器 不好使
posted on 2016-06-07 18:24 ACM_Someone like you 閱讀(828) 評論(0) 收藏 舉報
浙公網安備 33010602011771號