在這個(gè)流量為王的互聯(lián)網(wǎng)背景下,移動(dòng)端的H5頁(yè)面顯然在導(dǎo)流上承擔(dān)著重要作用,在H5頁(yè)面上,我們對(duì)引流的需求有兩種:
- 一是引導(dǎo)已下載用戶從H5頁(yè)面喚醒App并直達(dá)指定場(chǎng)景
- 二是引導(dǎo)未下載用戶從H5頁(yè)面下載App,首次打開App時(shí)直達(dá)指定場(chǎng)景
從運(yùn)營(yíng)角度來看,引導(dǎo)已下載用戶打開App,能提高用戶粘性和活躍度,而用戶在App內(nèi)的產(chǎn)品體驗(yàn)自然也比H5頁(yè)面要好;引導(dǎo)未下載用戶下載App并進(jìn)入指定頁(yè)面,顯然能給用戶更好的產(chǎn)品初體驗(yàn)。
這里其實(shí)就解釋了我們做H5喚醒App并直達(dá)指定頁(yè)面的必要性。
涉及哪些要素?
喚醒App這件事,在不同平臺(tái)要采用不同的方法,主要是這三個(gè):
- URL Scheme
- Universal Link
- Android App Links
1、URL Scheme
URL Scheme是IOS、Android都兼容的機(jī)制,只需要原生App開發(fā)時(shí)注冊(cè)Scheme即可,用戶點(diǎn)擊此類鏈接時(shí),會(huì)自動(dòng)喚醒App,并借助URL Router機(jī)制跳轉(zhuǎn)到指定頁(yè)面。
- <scheme name> : <hierarchical part> [ ? <query> ] [ # <fragment> ]
- <scheme name>:是scheme的名稱,代表著協(xié)議名稱。
- <hierarchical part>:它包含 authority 和 path。
- <query>:可選項(xiàng)目,隔開或&隔開的鍵值對(duì)<key>=<value>
- <fragmentg> :可選項(xiàng)目包,其它額外的標(biāo)識(shí)信息
盡管URL Scheme兼容性高,但卻存在許多限制,比如:
- 國(guó)內(nèi)各個(gè)廠商瀏覽器差異很大,當(dāng)要被喚醒的目標(biāo)App未安裝時(shí),這個(gè)鏈接很容易出錯(cuò)。
- 當(dāng)注冊(cè)有多個(gè)Scheme相同的時(shí)候,目前是沒有辦法區(qū)分的。
- 不支持從其他App中的UIWebView中跳轉(zhuǎn)到目標(biāo)App。
- 被部分主流平臺(tái)禁止,微信、微博、QQ瀏覽器、手機(jī)百度中都已經(jīng)被禁止使用。
正是由于這些限制的存在,蘋果和安卓都不約而同發(fā)布了自己的第二套方案:iOS的Universal Link、Android的App Links。
2、Universal Link
Universal Link是iOS9后蘋果推出的通用鏈接技術(shù),能夠方便的通過一個(gè)https鏈接來打開App指定頁(yè)面,不需要額外的判斷,如果沒有安裝App,可以跳轉(zhuǎn)到自定義地址。
相對(duì)Scheme的優(yōu)勢(shì)在于,Universal Link是一個(gè)Web Link,因此少了很多麻煩:
- 當(dāng)用戶已安裝該App時(shí),不需要加載任何頁(yè)面,能夠立即喚醒App,用戶未安裝App,則跳去對(duì)應(yīng)的web link(自定義頁(yè)面)。
- Universal Links支持從其他App中的UIWebView中跳轉(zhuǎn)到目標(biāo)app。
- 提供Universal Link給別的App進(jìn)行App間的交流,然而對(duì)方并不能夠用這個(gè)方法去檢測(cè)你的App是否被安裝,具有比較好的隱私性。
- 絕大多數(shù)平臺(tái)都支持Universal Link,微信7.0.5版本也解除了對(duì)Universal Link的限制,同時(shí)也能被搜索引擎索引。
3、App Links
Android M以上版本可以通過App Links,讓用戶在點(diǎn)擊一個(gè)鏈接時(shí)跳轉(zhuǎn)到App的指定頁(yè)面,前提是這個(gè)App已經(jīng)安裝并經(jīng)過驗(yàn)證。App Links的最大的作用,就是可以避免從頁(yè)面喚醒App時(shí)出現(xiàn)的選擇瀏覽器選項(xiàng)框,前提是必須注冊(cè)相應(yīng)的Scheme,就可以實(shí)現(xiàn)直接打開關(guān)聯(lián)的App。
實(shí)際上App Links和Universal Links差異不大,但相對(duì)來說有不同的限制:
- App links在國(guó)內(nèi)的支持還不夠,部分安卓瀏覽器并不支持跳轉(zhuǎn)至App,而是直接在瀏覽器上打開對(duì)應(yīng)頁(yè)面。
- 系統(tǒng)詢問是否打開對(duì)應(yīng)App時(shí),假如用戶選擇“取消”并且選中了“記住此操作”,那么用戶以后就無法再跳轉(zhuǎn)App。
幾個(gè)方案的缺陷
這幾種方式無論哪種都無法解決這幾個(gè)問題:
- 當(dāng)用戶未安裝目標(biāo)App時(shí),無法保留用戶停留的上下文,也就是說,用戶下載完App后,無法在首次打開App時(shí)還原指定頁(yè)面。
- Web目前無法監(jiān)聽App是否已安裝,因此這幾個(gè)方案都需要一些其他方法兼容喚醒App,或者跳轉(zhuǎn)下載頁(yè)面。
那么怎樣實(shí)現(xiàn)用戶安裝App后進(jìn)入指定頁(yè)面呢?
眾所周知,蘋果出于用戶隱私的保護(hù),設(shè)置了名為沙盒的機(jī)制:應(yīng)用只能訪問它聲明可以訪問的資源,但沙盒也阻礙了應(yīng)用間合理的信息共享。
但也不是完全沒辦法,比如使用模糊匹配,盡可能收集設(shè)備的特征,將Web和App上的信息點(diǎn)配合算法做一個(gè)匹配是可以做到的,但準(zhǔn)確率和成功率就取決于算法本身。如果App本身業(yè)務(wù)需求不高,那么低精度的方案也可以滿足,但如果業(yè)務(wù)上需要一個(gè)能做到一對(duì)一精準(zhǔn)匹配的方案,那么精準(zhǔn)度不夠高顯然會(huì)影響業(yè)務(wù)的開展。
第三方服務(wù)
如果嫌精準(zhǔn)度不夠高或者實(shí)現(xiàn)難度太大的話,可以交給專業(yè)的第三方去做,畢竟這幾項(xiàng)技術(shù)是基于系統(tǒng)平臺(tái)的,Android 及 iOS 每個(gè)系統(tǒng)版本的迭代后,配置方式都會(huì)有新的變化,且安卓機(jī)型眾多,瀏覽器眾多等也會(huì)導(dǎo)致出現(xiàn)兼容問題,開發(fā)者自行研發(fā)的話,資源配置以及系統(tǒng)更新后的維護(hù)成本是比較高的,還要考慮各種各樣的跳轉(zhuǎn)場(chǎng)景問題。
直接采用第三方SDK的好處就是,資源配置、兼容方面的適配這些事情都可以交給它們?nèi)プ觯吘惯@些供應(yīng)商本身就是專業(yè)做這項(xiàng)服務(wù)的,它們提供的服務(wù)在穩(wěn)定性和精準(zhǔn)度方面也是經(jīng)受過市場(chǎng)檢驗(yàn)的,至少在精準(zhǔn)匹配方面,有些已經(jīng)能在邀請(qǐng)分享方面做到一對(duì)一匹配,集成SDK也花不了多少時(shí)間,十幾分鐘就可以搞定。
國(guó)內(nèi)外提供這項(xiàng)技術(shù)的第三方服務(wù)商:
國(guó)內(nèi)有:openinstall
國(guó)外有:Branch