1.什么是DeepLink
2.什么是Deferred DeepLink
3.Deferred DeepLink的實(shí)現(xiàn)思路
DeepLink 深度鏈接
簡(jiǎn)單的說(shuō)就是用戶(hù)點(diǎn)擊一個(gè)鏈接,可以直接跳轉(zhuǎn)的app里面的制定頁(yè)面
使用DeepLink 點(diǎn)擊鏈接-->打開(kāi)App-->跳轉(zhuǎn)到指定界面
不使用DeepLink 點(diǎn)擊鏈接-->打開(kāi)App-->只能進(jìn)入app首頁(yè)
這項(xiàng)技術(shù)在iOS App有新舊兩種實(shí)現(xiàn)方案
Custom URL Scheme
Universal Links (iOS 9之后)
Universal Links 有許多 Custom URL Scheme不具備的優(yōu)點(diǎn)
1.不同的App可以定義相同的URL Scheme造成沖突,Universal Links則是由server端決定呼起哪一個(gè)app
2.Universal Links本身是一個(gè)https地址案糙,可以展示頁(yè)面,更友好亭枷,同時(shí)也能被搜索引擎索引
綜合這些優(yōu)點(diǎn)冰垄,Universal Links 大有取代前者的趨勢(shì)滑绒。
Deferred DeepLink 延遲深度鏈接
然而以上所說(shuō)的DeepLink阳似,都建立在用戶(hù)已經(jīng)安裝了App的前提下骚勘。
如果用戶(hù)沒(méi)用安裝App,則需要引導(dǎo)用戶(hù)到各種App Store去安裝,等到用戶(hù)安裝完畢撮奏,打開(kāi)App時(shí)就找不到之前的指定頁(yè)面了俏讹,這條流程就被打斷了。
安裝之后挽荡,再一次引導(dǎo)用戶(hù)點(diǎn)擊鏈接藐石,重走流程即供,這種體驗(yàn)顯然是接受不了的定拟。
因此,Deferred DeepLink應(yīng)運(yùn)而生逗嫡。要解決的核心問(wèn)題就是用戶(hù)匹配青自,怎么知道現(xiàn)在打開(kāi)App的用戶(hù)就是剛才點(diǎn)擊鏈接的那位用戶(hù)。
常見(jiàn)使用場(chǎng)景:
1.在 Web 和 App 的切換過(guò)程中保留上下文驱证。
(比如購(gòu)物延窜,用戶(hù)在web瀏覽哪一件商品,跳轉(zhuǎn)到App端繼續(xù)瀏覽抹锄。記錄登錄信息自動(dòng)登錄等等)
2.好友邀請(qǐng)逆瑞,點(diǎn)擊鏈接即可荠藤,無(wú)需填寫(xiě)繁瑣的邀請(qǐng)碼
Deferred DeepLink的實(shí)現(xiàn)思路
任何匹配的問(wèn)題都可以轉(zhuǎn)化到獲取唯一標(biāo)示的問(wèn)題。
很容易聯(lián)想到http里面的session和cookies获高。
但是iOS的沙盒模式哈肖,阻斷了App之間的數(shù)據(jù)共享。也就是說(shuō)App的cookies跟手機(jī)瀏覽器的cookies是分開(kāi)的念秧,無(wú)法互通淤井。
直到iOS 9,Apple開(kāi)放了SFSafariViewController
API,實(shí)現(xiàn)了App和Safari的cookies互通摊趾,那么一切問(wèn)題迎刃而解了币狠。首次啟動(dòng)App的時(shí)候,通過(guò)一個(gè)隱藏的SFSafariViewController
訪問(wèn)server砾层,server通過(guò)cookies拿到唯一標(biāo)示sessionID漩绵,從而得知用戶(hù)之前訪問(wèn)過(guò)什么商品,進(jìn)一步跳轉(zhuǎn)到一個(gè) Universal Links
梢为,再進(jìn)一步打開(kāi)對(duì)應(yīng)的商品詳情頁(yè)渐行,完成了Deferred DeepLink的流程。
具體實(shí)現(xiàn)可參考 國(guó)外開(kāi)源的Branch or VKSafariDomainBridge
這個(gè)方案僅僅解決了App和Safari之間的互通铸董,手機(jī)上還有微信祟印、手百、chrome等等第三方瀏覽器粟害,并且項(xiàng)目還要支持iOS 9之前的系統(tǒng)版本蕴忆。
下邊講另外一種方案,暫且叫做模糊匹配悲幅。
在用戶(hù)點(diǎn)擊web鏈接或打開(kāi)app的時(shí)候套鹅,盡可能的收集跟設(shè)備相關(guān)的信息,例如
a.設(shè)備屏幕尺寸
b.設(shè)備操作系統(tǒng)版本號(hào)
c.ip地址
d.訪問(wèn)時(shí)間
e.使用的語(yǔ)言 等等
這些信息的每一項(xiàng)都不能作為唯一標(biāo)示汰具,但是如果把他們組合起來(lái)卓鹿,作為一個(gè)集合,配合算法留荔,進(jìn)行模糊匹配吟孙,匹配成功的幾率會(huì)大大提高。缺點(diǎn)也是顯而易見(jiàn)的聚蝶,也許世界上找不到兩片同樣的葉子杰妓,但是要找兩部同樣的手機(jī)還是挺容易的。匹配成功率取決于匹配策略碘勉,需要長(zhǎng)期的去打磨匹配算法巷挥。
總結(jié)起來(lái),兩種方案都不是特別完美验靡,與其自己去DIY倍宾,不如采用第三方提供Deferred DeepLink解決方案雏节。