轉(zhuǎn)載至:https://zhuanlan.zhihu.com/p/20694818缓熟,如侵權(quán)請聯(lián)系刪除
DeepLink是我一直想聊的話題梢卸,但是一直沒下筆走诞,因為Deeplink技術(shù)的線索太多,太亂低剔,太雜速梗,就像《費加羅的婚禮》和《瘋狂的石頭》一樣,多條線索交織前進(jìn)襟齿,有生態(tài)為目的巨無霸姻锁,有商業(yè)化為目的創(chuàng)業(yè)公司,有體驗為目的系統(tǒng)開發(fā)商猜欺。這些線索都是以深度鏈接(DeepLink)為基礎(chǔ)位隶,各打各的牌,各下各的棋开皿。
昨天再讀《國家為什么會失敗》涧黄,重溫國家的興榮可以簡化到2個維度來分析,我突然有點靈感赋荆,把DeepLink分為三層來介紹笋妥,希望能把DeepLink講清楚。
移動用戶86%的時間 (Flurry 2015數(shù)據(jù))都是在各個APP中窄潭。然而春宣,各個移動App就像大海中的一座座島嶼,雖然都生活在一個海洋中(Android系統(tǒng)或iOS)嫉你,但是他們之間通常是老死不相往來月帝。舉例來說,在微信應(yīng)用中幽污,用戶基本上就沒有機(jī)會打開第三方應(yīng)用APP嚷辅,只能通過Web/瀏覽器方式提供受限的互通。
真實的用戶需求是什么樣的呢距误? 例如簸搞,用戶在朋友圈中,看到關(guān)于一個飯店文章的時候准潭,用戶可以很方便打開大眾點評應(yīng)用看評論攘乒,直接打開美團(tuán)查看折扣券,直接打開叫車軟件前往該地點惋鹅。 在信息流看到推薦的商品则酝,能夠直接打開淘寶/京東App查看寶貝詳情。但是很不幸,目前這些應(yīng)用孤島之間都是通過Web進(jìn)行連接的沽讹,通過瀏覽器的WebView般卑,進(jìn)行內(nèi)容跳轉(zhuǎn),缺少原生App體驗爽雄。
那么問題來了蝠检,為什么各個應(yīng)用之間,為啥不能支持方便的自由穿梭呢挚瘟? 這里有2個原因叹谁,一個是經(jīng)濟(jì)原因,另外一個是技術(shù)原因乘盖。
經(jīng)濟(jì)原因比較簡單焰檩,目前各個應(yīng)用開發(fā)者的核心目標(biāo)是把用戶"滯留"在自己的應(yīng)用中,用戶離開(哪怕短期離開)被認(rèn)為是需要醫(yī)治的病订框。應(yīng)用做的越來越大析苫,越來越粘人。舉例來說穿扳,本來瀏覽器是一個系統(tǒng)工具軟件衩侥,但越來越多的瀏覽器軟件集成了更多的功能模塊,例如新聞矛物,小說茫死,視頻,音樂等履羞。大家都希望用戶在自己的APP中峦萎,沉溺的時間越長越好。
另外一個就是技術(shù)原因了吧雹,也是今天想聊的主題。所謂DeepLink(深度鏈接)就是支持在移動App自由跳轉(zhuǎn)的技術(shù)涂身,在PC的Web時代雄卷,這個問題簡化一個HTTP地址。到了移動時代蛤售,這個問題變得復(fù)雜起來丁鹉,移動操作系統(tǒng)有多家,各家處理應(yīng)用間跳轉(zhuǎn)的底層技術(shù)都不一樣悴能,調(diào)用方式揣钦、代碼都不同,支持的力度也不同漠酿。目前也沒有任何行業(yè)協(xié)會致力于解決這個問題冯凹,沒有像W3C組織解決Web的規(guī)范化。
1 總結(jié)篇
今天炒嘲,我從三個層次來介紹移動DeepLink相關(guān)技術(shù)和產(chǎn)品宇姚,包括系統(tǒng)基礎(chǔ)技術(shù)匈庭,巨頭產(chǎn)品,創(chuàng)新產(chǎn)品浑劳,圖示如下阱持。
簡單解釋一下:
1. 底層:系統(tǒng)級別對于DeepLink技術(shù)支持
a) 基礎(chǔ)的App調(diào)起技術(shù),通過代碼實現(xiàn)魔熏,步驟較為復(fù)雜
b) 增強(qiáng)的App調(diào)起技術(shù)(App Links)衷咽,通過HTTP(S)調(diào)用(Android 6.0和iOS9以上)
2. 中間層:移動巨無霸公司在應(yīng)用間調(diào)轉(zhuǎn)的技術(shù)和思路
在APP時代,搜索公司無法索引到APP內(nèi)部的數(shù)據(jù)蒜绽,因此搜索公司希望能夠建立Web和APP之間的關(guān)系的索引镶骗,因此它對于Deep Link是一個擁抱的態(tài)度。谷歌/百度/蘋果都提供技術(shù)和接口滓窍,讓APP開發(fā)者提交Web和APP直接的映射關(guān)系卖词,對于有映射的WEB結(jié)果,用戶有機(jī)會直接打開APP吏夯,提高用戶體驗此蜈。對于搜索廣告商而言,除了Web形式的落地頁之外噪生,他們也可以提交對應(yīng)的APP地址裆赵,例如谷歌App Indexing, 百度APP Link, 必應(yīng) App Linking。
3. 高層:基于DeepLink的創(chuàng)新機(jī)會
由于底層DeepLink技術(shù)的復(fù)雜性跺嗽,巨無霸企業(yè)的規(guī)范各自為政的背景下战授,DeepLink的應(yīng)用層面還是一個《列王的紛爭》的感覺,這種混沌的狀態(tài)也吸引了很多創(chuàng)業(yè)小公司桨嫁,利用DeepLink技術(shù)植兰,找到一個業(yè)務(wù)突破點。不少公司獲得較高的估值璃吧,例如URX(估值4000萬美元), DeepLink.me, BUTTON楣导,豌豆莢等。
第二部分 底層:基礎(chǔ)技術(shù)篇
這一部分介紹畜挨,基礎(chǔ)的系統(tǒng)調(diào)用筒繁,如何打開第三方應(yīng)用
第一類,基礎(chǔ)DeepLink調(diào)用方式:
打開APP發(fā)起者需要處理所有的容錯巴元,版本檢查毡咏,參數(shù)非標(biāo)準(zhǔn)傳遞等所有事項。下面是各個系統(tǒng)的DeepLink實現(xiàn)的具體技術(shù)
Android 系統(tǒng): 創(chuàng)建一個Intent逮刨,并且指定目標(biāo)應(yīng)用的包名(例如com.twitter等)和參數(shù)等呕缭,既可以打開目標(biāo)應(yīng)用。
iOS系統(tǒng):使用openURL("twitter://userid/1234"), canOpenURL
Windows Phone:使用UriMapper ,例如Uri:"/Music/song123"
JavaScript:使用Intent Schema,使用新窗口打開臊旭,但是很多瀏覽器/應(yīng)用并不支持這些JS的執(zhí)行落恼,或者有白名單列表。
第二類:增強(qiáng)的DeepLink調(diào)用篇(App Links/Universal Links, Since 2015)
Android 和 iOS其實是鼓勵各個應(yīng)用之間進(jìn)行交互和集成离熏,提高用戶體驗佳谦,為了就解決基礎(chǔ)調(diào)用方式的復(fù)雜性。2015年滋戳,Android 和iOS依次推出了方便開發(fā)者得App Links技術(shù)钻蔑,谷歌叫做App Links(Android 6.0),蘋果叫做Universal Links(iOS9.0)奸鸯,基本想法就是把打開應(yīng)用的地址咪笑,統(tǒng)一為使用HTTP(S)方式,系統(tǒng)通過攔截和解析HOST地址娄涩,與系統(tǒng)注冊的HOST進(jìn)行匹配窗怒,如果發(fā)現(xiàn)就可以直接打開APP。(注意蓄拣,谷歌的APP Links技術(shù)和App Indexing沒有半毛錢關(guān)系扬虚。)
簡單介紹一下Google App Links技術(shù),
以Android App Links為例(蘋果的Universal Links整個過程也很類似)
1. App 開發(fā)者使用AppLinks(Android 6.0)
a)在App Manifest中聲明App Links球恤,打開Intent Filter
b)在HOST服務(wù)器創(chuàng)建statements.json配置辜昵,包含打開包名和數(shù)字簽名
2.系統(tǒng)的調(diào)用DeepLink過程
系統(tǒng)如果發(fā)現(xiàn)http://HTTPS://HOST請求,系統(tǒng)將檢查App Links咽斧,如果發(fā)現(xiàn)注冊的APP堪置,就會直接打開應(yīng)用。支持的場景包括瀏覽器张惹,短信等很多系統(tǒng)內(nèi)置場景舀锨。
第三部分 中層:巨無霸的DeepLink情節(jié)
搜索結(jié)果或則社交網(wǎng)絡(luò)是用戶經(jīng)常使用的APP,百度搜索宛逗,F(xiàn)acebook坎匿,谷歌搜索,這些應(yīng)用也在吸收直接跳轉(zhuǎn)到第三方應(yīng)用的技術(shù)拧额,它有三個目的:
第一:獲取App的應(yīng)用內(nèi)數(shù)據(jù)碑诉。之前的結(jié)果都是Web結(jié)果彪腔,搜索引擎公司在App的事件里侥锦,無法為應(yīng)用內(nèi)數(shù)據(jù)做索引,百度/谷歌/必應(yīng)需要索引更多的應(yīng)用內(nèi)數(shù)據(jù)德挣。
第二:提升廣告主的轉(zhuǎn)化恭垦。通過直接打開/拉活A(yù)PP,有數(shù)據(jù)表明轉(zhuǎn)化率更高,廣告主更愿意為高轉(zhuǎn)化率的技術(shù)買單番挺。
第三唠帝,改進(jìn)移動的用戶體驗。例如玄柏,你在瀏覽器搜到一個地點襟衰,點擊之后直接調(diào)轉(zhuǎn)到打車軟件。
這里面有一個核心技術(shù)粪摘,就是如何建立Web和App之間的映射瀑晒。對這個行業(yè)來說,這是一個新問題徘意,谷歌/Facebook提供了2種方式苔悦。
方法一:App開發(fā)者提供這種映射關(guān)系 ,手工上載這種關(guān)系
方法二:App在Web站內(nèi)描述好打開App的方式椎咧,機(jī)器爬蟲可收集玖详。
目前來說,F(xiàn)acebook提出了一種標(biāo)準(zhǔn)叫做App Links勤讽,定義了一些Meta語言放在<HTML>的Meta部分蟋座。 App Links的相關(guān)標(biāo)準(zhǔn)定義,在http://AppLinks.org可以找到地技。這確實是一個行業(yè)不錯的標(biāo)準(zhǔn)蜈七,可以定義App和Web的映射,這樣搜索引擎公司建立索引將更加方便自然莫矗。豌豆莢推出的應(yīng)用內(nèi)搜索飒硅,也是需要App將這些信息提供給豌豆莢,用于索引作谚。
http://AppLinks.org的標(biāo)記代碼例子三娩,用于支持不同的OS。
下面是App Indexing 的一些基本流程
行業(yè)的幾個相關(guān)的技術(shù)妹懒,雖然名稱不同雀监,但都是一個事情:
1. Facebook : App Links(2014),http://AppLinks.org
2. 谷歌:App Indexing(2014,Android 4.0):
3.Quixey: 網(wǎng)站的根目錄下面AppURL.JSON
4. 百度App Link : AppLink.baidu.com; 搜索場景眨唬, 面向廣告主或有Web站的APP開發(fā)者会前。 WEB站中嵌入了與APP之間的映射關(guān)系。
5. Bing App Linking:類似谷歌的App Indexing匾竿,Bing可以在搜索結(jié)果中直接打開APP的過程瓦宜,主要用于一些電商產(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)反璃,利用自己巨無霸的地位,自己索引Web和App映射假夺,支持巨無霸APP中打開第三方應(yīng)用淮蜈。那么對于其他的大大小小應(yīng)用,非巨無霸應(yīng)用已卷,如何打開其它應(yīng)用呢梧田?
我們來看看需求,一些小應(yīng)用需要集成一些第三App體驗侧蘸,例如一個訂餐軟件集成一個打車軟件的App柿扣,一個美食App在后面對接一個訂餐App,或折扣券App闺魏。為了解決這個問題未状,通常有兩個技術(shù)問題要解決。
1. 調(diào)用方App:需要簡化調(diào)用的過程(容錯析桥,參數(shù)傳遞司草,標(biāo)準(zhǔn)化等)
2. 被調(diào)起方App:需要支持DeepLink,并且無縫與調(diào)起方聯(lián)系起來
有問題泡仗,就會有創(chuàng)新埋虹。前幾年出現(xiàn)不少創(chuàng)新公司,解決這些問題娩怎,并積極開發(fā)DeepLink的商業(yè)機(jī)會搔课。總結(jié)了一下截亦,這些公司大概提供了兩類服務(wù):
1. App的某些Intent場景下爬泥,適時引入第三方App,類商業(yè)化平臺例如有個App軟件需要對接打車服務(wù)崩瓤,那么廣告平臺可以選擇滴滴或者是神州的App打開袍啡。http://DeepLink.me公司推出了移動端的AdWords,有雄心壯志把所有的App都接入它的廣告平臺却桶。
2. 降低DeepLink的集成門檻境输,方便的支持跨平臺,統(tǒng)計等
簡單介紹一下市面上一些DeepLink的創(chuàng)業(yè)公司/項目吧颖系。
1. Bitly:短鏈接服務(wù)嗅剖,提供SDK,可以非常方便調(diào)用第三方APP
2. 騰訊應(yīng)用直達(dá)廣告:支持應(yīng)用的拉活嘁扼,在蘑菇街有Show Case信粮,提高30%的CPA
3. AppsFlyer:提供SDK服務(wù),降低DeepLink集成門檻偷拔,支持強(qiáng)大統(tǒng)計分析蒋院。
4. http://DeepLink.me:提供SDK服務(wù),也推出AdWords產(chǎn)品莲绰,App推廣可以購買相關(guān)的Intent欺旧,通過DeepLink進(jìn)行倒流。
5. URX:提供場景化的第三方應(yīng)用打開蛤签,也希望通過廣告模式發(fā)展
最后總結(jié)一下DeepLink的發(fā)展辞友,在Android6.0和iOS9.0之前,系統(tǒng)對于DeepLink的技術(shù)支持有限震肮,使用起來比較復(fù)雜称龙,業(yè)務(wù)的模式也比較薄弱,一直都沒有發(fā)展起來戳晌。隨著Google App Links和 Apple Universal Links的發(fā)展鲫尊,越來越多的App可以參考這兩個標(biāo)準(zhǔn),支持從其它應(yīng)用中被喚起沦偎。由于商業(yè)原因的限制疫向,直接調(diào)轉(zhuǎn)到第三方應(yīng)用的場景還有限,因此雖然技術(shù)很美好和強(qiáng)大豪嚎,但是現(xiàn)實卻很骨感搔驼,應(yīng)用之間的互聯(lián)互通還是一個商業(yè)禁忌之地。
終于羅嗦完了侈询,本文相關(guān)技術(shù)名詞較多舌涨,這里有個總結(jié),方便大家查閱扔字。