移動(dòng)DeepLink的前生今世
DeepLink是我一直想聊的話題,但是一直沒(méi)下筆,因?yàn)镈eeplink技術(shù)的線索太多,太亂,太雜,就像《費(fèi)加羅的婚禮》和《瘋狂的石頭》一樣,多條線索交織前進(jìn),有生態(tài)為目的巨無(wú)霸,有商業(yè)化為目的創(chuàng)業(yè)公司,有體驗(yàn)為目的系統(tǒng)開(kāi)發(fā)商。這些線索都是以深度鏈接(DeepLink)為基礎(chǔ),各打各的牌,各下各的棋。
昨天再讀《國(guó)家為什么會(huì)失敗》,重溫國(guó)家的興榮可以簡(jiǎn)化到2個(gè)維度來(lái)分析,我突然有點(diǎn)靈感,把DeepLink分為三層來(lái)介紹,希望能把DeepLink講清楚。
移動(dòng)用戶86%的時(shí)間 (Flurry 2015數(shù)據(jù))都是在各個(gè)APP中。然而,各個(gè)移動(dòng)App就像大海中的一座座島嶼,雖然都生活在一個(gè)海洋中(Android系統(tǒng)或iOS),但是他們之間通常是老死不相往來(lái)。舉例來(lái)說(shuō),在微信應(yīng)用中,用戶基本上就沒(méi)有機(jī)會(huì)打開(kāi)第三方應(yīng)用APP,只能通過(guò)Web/瀏覽器方式提供受限的互通。
真實(shí)的用戶需求是什么樣的呢? 例如,用戶在朋友圈中,看到關(guān)于一個(gè)飯店文章的時(shí)候,用戶可以很方便打開(kāi)大眾點(diǎn)評(píng)應(yīng)用看評(píng)論,直接打開(kāi)美團(tuán)查看折扣券,直接打開(kāi)叫車軟件前往該地點(diǎn)。 在信息流看到推薦的商品,能夠直接打開(kāi)淘寶/京東App查看寶貝詳情。但是很不幸,目前這些應(yīng)用孤島之間都是通過(guò)Web進(jìn)行連接的,通過(guò)瀏覽器的WebView,進(jìn)行內(nèi)容跳轉(zhuǎn),缺少原生App體驗(yàn)。
那么問(wèn)題來(lái)了,為什么各個(gè)應(yīng)用之間,為啥不能支持方便的自由穿梭呢? 這里有2個(gè)原因,一個(gè)是經(jīng)濟(jì)原因,另外一個(gè)是技術(shù)原因。
經(jīng)濟(jì)原因比較簡(jiǎn)單,目前各個(gè)應(yīng)用開(kāi)發(fā)者的核心目標(biāo)是把用戶"滯留"在自己的應(yīng)用中,用戶離開(kāi)(哪怕短期離開(kāi))被認(rèn)為是需要醫(yī)治的病。應(yīng)用做的越來(lái)越大,越來(lái)越粘人。舉例來(lái)說(shuō),本來(lái)瀏覽器是一個(gè)系統(tǒng)工具軟件,但越來(lái)越多的瀏覽器軟件集成了更多的功能模塊,例如新聞,小說(shuō),視頻,音樂(lè)等。大家都希望用戶在自己的APP中,沉溺的時(shí)間越長(zhǎng)越好。
另外一個(gè)就是技術(shù)原因了,也是今天想聊的主題。所謂DeepLink(深度鏈接)就是支持在移動(dòng)App自由跳轉(zhuǎn)的技術(shù),在PC的Web時(shí)代,這個(gè)問(wèn)題簡(jiǎn)化一個(gè)HTTP地址。到了移動(dòng)時(shí)代,這個(gè)問(wèn)題變得復(fù)雜起來(lái),移動(dòng)操作系統(tǒng)有多家,各家處理應(yīng)用間跳轉(zhuǎn)的底層技術(shù)都不一樣,調(diào)用方式、代碼都不同,支持的力度也不同。目前也沒(méi)有任何行業(yè)協(xié)會(huì)致力于解決這個(gè)問(wèn)題,沒(méi)有像W3C組織解決Web的規(guī)范化。
一、總結(jié)篇
今天,我從三個(gè)層次來(lái)介紹移動(dòng)DeepLink相關(guān)技術(shù)和產(chǎn)品,包括系統(tǒng)基礎(chǔ)技術(shù),巨頭產(chǎn)品,創(chuàng)新產(chǎn)品,圖示如下。
簡(jiǎn)單解釋一下:
1. 底層:系統(tǒng)級(jí)別對(duì)于DeepLink技術(shù)支持
a) 基礎(chǔ)的App調(diào)起技術(shù),通過(guò)代碼實(shí)現(xiàn),步驟較為復(fù)雜
b) 增強(qiáng)的App調(diào)起技術(shù)(App Links),通過(guò)HTTP(S)調(diào)用(Android 6.0和iOS9以上)
2. 中間層:移動(dòng)巨無(wú)霸公司在應(yīng)用間調(diào)轉(zhuǎn)的技術(shù)和思路
在APP時(shí)代,搜索公司無(wú)法索引到APP內(nèi)部的數(shù)據(jù),因此搜索公司希望能夠建立Web和APP之間的關(guān)系的索引,因此它對(duì)于Deep Link是一個(gè)擁抱的態(tài)度。谷歌/百度/蘋果都提供技術(shù)和接口,讓APP開(kāi)發(fā)者提交Web和APP直接的映射關(guān)系,對(duì)于有映射的WEB結(jié)果,用戶有機(jī)會(huì)直接打開(kāi)APP,提高用戶體驗(yàn)。對(duì)于搜索廣告商而言,除了Web形式的落地頁(yè)之外,他們也可以提交對(duì)應(yīng)的APP地址,例如谷歌App Indexing, 百度APP Link, 必應(yīng) App Linking。
3. 高層:基于DeepLink的創(chuàng)新機(jī)會(huì)
由于底層DeepLink技術(shù)的復(fù)雜性,巨無(wú)霸企業(yè)的規(guī)范各自為政的背景下,DeepLink的應(yīng)用層面還是一個(gè)《列王的紛爭(zhēng)》的感覺(jué),這種混沌的狀態(tài)也吸引了很多創(chuàng)業(yè)小公司,利用DeepLink技術(shù),找到一個(gè)業(yè)務(wù)突破點(diǎn)。不少公司獲得較高的估值,例如URX(估值4000萬(wàn)美元), DeepLink.me, BUTTON,豌豆莢等。
二、底層:基礎(chǔ)技術(shù)篇
這一部分介紹,基礎(chǔ)的系統(tǒng)調(diào)用,如何打開(kāi)第三方應(yīng)用
***類,基礎(chǔ)DeepLink調(diào)用方式:
打開(kāi)APP發(fā)起者需要處理所有的容錯(cuò),版本檢查,參數(shù)非標(biāo)準(zhǔn)傳遞等所有事項(xiàng)。下面是各個(gè)系統(tǒng)的DeepLink實(shí)現(xiàn)的具體技術(shù)
- Android 系統(tǒng): 創(chuàng)建一個(gè)Intent,并且指定目標(biāo)應(yīng)用的包名(例如com.twitter等)和參數(shù)等,既可以打開(kāi)目標(biāo)應(yīng)用。
- iOS系統(tǒng):使用openURL("twitter://userid/1234"), canOpenURL()
- Windows Phone : 使用UriMapper ,例如Uri:"/Music/song123"
- JavaScript:使用Intent Schema,使用新窗口打開(kāi),但是很多瀏覽器/應(yīng)用并不支持這些JS的執(zhí)行,或者有白名單列表。
第二類:增強(qiáng)的DeepLink調(diào)用篇(App Links/Universal Links, Since 2015)
Android 和 iOS其實(shí)是鼓勵(lì)各個(gè)應(yīng)用之間進(jìn)行交互和集成,提高用戶體驗(yàn),為了就解決基礎(chǔ)調(diào)用方式的復(fù)雜性。2015年,Android 和iOS依次推出了方便開(kāi)發(fā)者得App Links技術(shù),谷歌叫做App Links(Android 6.0),蘋果叫做Universal Links(iOS9.0),基本想法就是把打開(kāi)應(yīng)用的地址,統(tǒng)一為使用HTTP(S)方式,系統(tǒng)通過(guò)攔截和解析HOST地址,與系統(tǒng)注冊(cè)的HOST進(jìn)行匹配,如果發(fā)現(xiàn)就可以直接打開(kāi)APP。(注意,谷歌的APP Links技術(shù)和App Indexing沒(méi)有半毛錢關(guān)系。)
簡(jiǎn)單介紹一下Google App Links技術(shù),
以Android App Links為例(蘋果的Universal Links整個(gè)過(guò)程也很類似)
1. App 開(kāi)發(fā)者使用AppLinks(Android 6.0)
a) 在App Manifest中聲明App Links,打開(kāi)Intent Filter
b)在HOST服務(wù)器創(chuàng)建statements.json配置,包含打開(kāi)包名和數(shù)字簽名
2.系統(tǒng)的調(diào)用DeepLink過(guò)程
系統(tǒng)如果發(fā)現(xiàn)HTTPS://HOST請(qǐng)求,系統(tǒng)將檢查App Links,如果發(fā)現(xiàn)注冊(cè)的APP,就會(huì)直接打開(kāi)應(yīng)用。支持的場(chǎng)景包括瀏覽器,短信等很多系統(tǒng)內(nèi)置場(chǎng)景。
三、中層:巨無(wú)霸的DeepLink情節(jié)
搜索結(jié)果或則社交網(wǎng)絡(luò)是用戶經(jīng)常使用的APP,百度搜索,F(xiàn)acebook,谷歌搜索,這些應(yīng)用也在吸收直接跳轉(zhuǎn)到第三方應(yīng)用的技術(shù),它有三個(gè)目的:
***:獲取App的應(yīng)用內(nèi)數(shù)據(jù)。之前的結(jié)果都是Web結(jié)果,搜索引擎公司在App的事件里,無(wú)法為應(yīng)用內(nèi)數(shù)據(jù)做索引,百度/谷歌/必應(yīng)需要索引更多的應(yīng)用內(nèi)數(shù)據(jù)。
第二:提升廣告主的轉(zhuǎn)化。通過(guò)直接打開(kāi)/拉活A(yù)PP,有數(shù)據(jù)表明轉(zhuǎn)化率更高,廣告主更愿意為高轉(zhuǎn)化率的技術(shù)買單。
第三,改進(jìn)移動(dòng)的用戶體驗(yàn)。例如,你在瀏覽器搜到一個(gè)地點(diǎn),點(diǎn)擊之后直接調(diào)轉(zhuǎn)到打車軟件。
這里面有一個(gè)核心技術(shù),就是如何建立Web和App之間的映射。對(duì)這個(gè)行業(yè)來(lái)說(shuō),這是一個(gè)新問(wèn)題,谷歌/Facebook提供了2種方式。
方法一:App開(kāi)發(fā)者提供這種映射關(guān)系 ,手工上載這種關(guān)系
方法二:App在Web站內(nèi)描述好打開(kāi)App的方式,機(jī)器爬蟲可收集。
目前來(lái)說(shuō),F(xiàn)acebook提出了一種標(biāo)準(zhǔn)叫做App Links,定義了一些Meta語(yǔ)言放在的Meta部分。 App Links的相關(guān)標(biāo)準(zhǔn)定義,在AppLinks.org可以找到。這確實(shí)是一個(gè)行業(yè)不錯(cuò)的標(biāo)準(zhǔn),可以定義App和Web的映射,這樣搜索引擎公司建立索引將更加方便自然。豌豆莢推出的應(yīng)用內(nèi)搜索,也是需要App將這些信息提供給豌豆莢,用于索引。
AppLinks.org的標(biāo)記代碼例子,用于支持不同的OS。
下面是App Indexing 的一些基本流程
行業(yè)的幾個(gè)相關(guān)的技術(shù),雖然名稱不同,但都是一個(gè)事情:
1. Facebook : App Links(2014),AppLinks.org
2. 谷歌:App Indexing(2014,Android 4.0):
3. Quixey: 網(wǎng)站的根目錄下面AppURL.JSON
4. 百度App Link : AppLink.baidu.com; 搜索場(chǎng)景, 面向廣告主或有Web站的APP開(kāi)發(fā)者。 WEB站中嵌入了與 APP之間的映射關(guān)系。
5. Bing App Linking: 類似谷歌的App Indexing,Bing可以在搜索結(jié)果中直接打開(kāi)APP的過(guò)程,主要用于一些電商產(chǎn)品的推廣。
6. 豌豆莢 In-App Search:應(yīng)用內(nèi)搜索,比較類似谷歌App Indexing
四、創(chuàng)新層:DeepLink 創(chuàng)新產(chǎn)品篇
在中層,大公司都定義了自己的DeepLink技術(shù)標(biāo)準(zhǔn),利用自己巨無(wú)霸的地位,自己索引Web和App映射,支持巨無(wú)霸APP中打開(kāi)第三方應(yīng)用。那么對(duì)于其他的大大小小應(yīng)用,非巨無(wú)霸應(yīng)用,如何打開(kāi)其它應(yīng)用呢?
我們來(lái)看看需求,一些小應(yīng)用需要集成一些第三App體驗(yàn),例如一個(gè)訂餐軟件集成一個(gè)打車軟件的App,一個(gè)美食App在后面對(duì)接一個(gè)訂餐App,或折扣券App。為了解決這個(gè)問(wèn)題,通常有兩個(gè)技術(shù)問(wèn)題要解決。
1. 調(diào)用方App:需要簡(jiǎn)化調(diào)用的過(guò)程(容錯(cuò),參數(shù)傳遞,標(biāo)準(zhǔn)化等)
2. 被調(diào)起方App:需要支持DeepLink,并且無(wú)縫與調(diào)起方聯(lián)系起來(lái)
有問(wèn)題,就會(huì)有創(chuàng)新。前幾年出現(xiàn)不少創(chuàng)新公司,解決這些問(wèn)題,并積極開(kāi)發(fā)DeepLink的商業(yè)機(jī)會(huì)。總結(jié)了一下,這些公司大概提供了兩類服務(wù):
1. App的某些Intent場(chǎng)景下,適時(shí)引入第三方App,類商業(yè)化平臺(tái)
例如有個(gè)App軟件需要對(duì)接打車服務(wù),那么廣告平臺(tái)可以選擇滴滴或者是神州的App打開(kāi)。DeepLink.me公司推出了移動(dòng)端的AdWords,有雄心壯志把所有的App都接入它的廣告平臺(tái)。
2. 降低DeepLink的集成門檻,方便的支持跨平臺(tái),統(tǒng)計(jì)等
簡(jiǎn)單介紹一下市面上一些DeepLink的創(chuàng)業(yè)公司/項(xiàng)目吧。
- Bitly:短鏈接服務(wù),提供SDK,可以非常方便調(diào)用第三方APP
- 騰訊應(yīng)用直達(dá)廣告:支持應(yīng)用的拉活,在蘑菇街有Show Case,提高30%的CPA
- AppsFlyer:提供SDK服務(wù),降低DeepLink集成門檻,支持強(qiáng)大統(tǒng)計(jì)分析。
- DeepLink.me:提供SDK服務(wù),也推出AdWords產(chǎn)品,App推廣可以購(gòu)買相關(guān)的Intent,通過(guò)DeepLink進(jìn)行倒流。
- URX:提供場(chǎng)景化的第三方應(yīng)用打開(kāi),也希望通過(guò)廣告模式發(fā)展
***總結(jié)一下DeepLink的發(fā)展,在Android6.0和iOS9.0之前,系統(tǒng)對(duì)于DeepLink的技術(shù)支持有限,使用起來(lái)比較復(fù)雜,業(yè)務(wù)的模式也比較薄弱,一直都沒(méi)有發(fā)展起來(lái)。隨著Google App Links和 Apple Universal Links的發(fā)展,越來(lái)越多的App可以參考這兩個(gè)標(biāo)準(zhǔn),支持從其它應(yīng)用中被喚起。由于商業(yè)原因的限制,直接調(diào)轉(zhuǎn)到第三方應(yīng)用的場(chǎng)景還有限,因此雖然技術(shù)很美好和強(qiáng)大,但是現(xiàn)實(shí)卻很骨感,應(yīng)用之間的互聯(lián)互通還是一個(gè)商業(yè)禁忌之地。
終于羅嗦完了,本文相關(guān)技術(shù)名詞較多,這里有個(gè)總結(jié),方便大家查閱。
【本文為51CTO專欄作者“歐陽(yáng)辰”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系作者本人獲取授權(quán)】