Android Deeplink探究

移動(dòng)端深度鏈接童叠,簡(jiǎn)稱(chēng)deeplink框喳。這是一種通過(guò)uri鏈接到app特定位置的一種跳轉(zhuǎn)技術(shù)课幕,不單是簡(jiǎn)單地通過(guò)網(wǎng)頁(yè)、app等打開(kāi)目標(biāo)app五垮,還能達(dá)到利用傳遞標(biāo)識(shí)跳轉(zhuǎn)至不同頁(yè)面的效果乍惊。參考Create Deep Links to App Content

場(chǎng)景

在推廣、廣告放仗、應(yīng)用間跳轉(zhuǎn)的場(chǎng)景下润绎,使用極多。這里將根據(jù)以下要點(diǎn)來(lái)介紹deeplink诞挨。

  1. intent
  2. intent-filter
  3. scheme

原理介紹

  • intent

首先我們要講一下的是intent莉撇,在android中,intent作為“調(diào)用意圖”來(lái)解釋再合適不過(guò)了惶傻,其作用不用多說(shuō)棍郎,就是為調(diào)用其他app所做的封裝,這里就簡(jiǎn)單說(shuō)一下银室。intent的調(diào)用有顯式和隱式兩種方式涂佃。

顯式調(diào)用就好比你去別人家做客,顯式調(diào)用類(lèi)似于你知道朋友家的地址粮揉,浙江省杭州市西湖區(qū)某某小區(qū)幾棟幾零幾巡李,人家門(mén)牌都寫(xiě)的很清楚抚笔,你去找就很容易扶认,指向性唯一。

隱式調(diào)用包含一定的條件殊橙,有action辐宾,category,data膨蛮,type叠纹,extras,flags等等敞葛,每一種屬性都類(lèi)似于篩選條件誉察。你說(shuō)你要去杭州的山上玩,那么就會(huì)給你定位到杭州市的各種山惹谐,只要符合這個(gè)條件持偏,他們都會(huì)一一被列出來(lái),至于去哪里氨肌,就看你自己選鸿秆。

  • intent-filter

intent-filter是針對(duì)你跳轉(zhuǎn)的目標(biāo)來(lái)講的怎囚,就類(lèi)似于門(mén)牌的修飾卿叽,他會(huì)在門(mén)牌上定義上述介紹的那些屬性。當(dāng)有intent發(fā)送過(guò)來(lái)的時(shí)候,就會(huì)篩選出符合條件的app來(lái)考婴。最常見(jiàn)的就是

<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />

這倆屬性可以說(shuō)AndroidManifest.xml最常見(jiàn)的兩行代碼了贩虾,作用就是app第一個(gè)啟動(dòng)的activity。一個(gè)app里有很多activity沥阱,在啟動(dòng)的時(shí)候整胃,系統(tǒng)并不知道哪個(gè)是第一個(gè)要啟動(dòng)的,那么他就發(fā)一個(gè)setAction為“android.intent.action.MAIN”喳钟、setCategory為“android.intent.category.LAUNCHER”的intent出來(lái)屁使,被匹配的到Activity就會(huì)啟動(dòng)了。

  • Android Deeplink探究

deeplink所需要的幾個(gè)屬性大致有以下幾個(gè)

<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="xt"
  android:host="www.abc.com"
  android:pathPrefix="/work" />
</intent-filter>

這邊一個(gè)個(gè)介紹過(guò)去奔则,action.VIEW是打開(kāi)一個(gè)視圖蛮寂,category.DEFAULT為默認(rèn),category.DEFAULT為設(shè)置該組件可以使用瀏覽器啟動(dòng)易茬,這個(gè)是關(guān)鍵酬蹋,從瀏覽器跳轉(zhuǎn),就要通過(guò)這個(gè)屬性抽莱。data中的scheme范抓、host、pathPrefix等等食铐,這個(gè)是uri的鏈接匕垫,scheme可以導(dǎo)向app的跳轉(zhuǎn),是另一個(gè)關(guān)鍵虐呻。

接下來(lái)就是生成一個(gè)短鏈象泵,通過(guò)瀏覽器打開(kāi)就行了。比如"xt://www.abc.com/work"斟叼,這里要注意的是偶惠,uri也是層級(jí)過(guò)濾的,例如有兩個(gè)activity同時(shí)聲明了scheme為“xt”朗涩,那么會(huì)繼續(xù)往下匹配host忽孽。

好了,deeplink的原理及使用谢床,就基本講完了兄一。

拓展

由于推廣等場(chǎng)景的使用,許多都是由網(wǎng)頁(yè)打開(kāi)萤悴,針對(duì)一些未安裝的用戶(hù)進(jìn)行跳轉(zhuǎn)的瘾腰。整個(gè)流程要求用戶(hù)先去應(yīng)用市場(chǎng)下載,下載完后再打開(kāi)跳轉(zhuǎn)覆履。普通的deeplink實(shí)現(xiàn)方案已經(jīng)不能滿(mǎn)足蹋盆,進(jìn)而演化出一種延遲深度鏈接费薄。

目前市場(chǎng)上流行的解決方案很多,類(lèi)似魔窗栖雾,google的firebase dynamic-link楞抡,branch,facebook的app-links等等(我是不是要收一波廣告費(fèi)txtx)析藕。翻看了一下源碼及實(shí)現(xiàn)召廷,大致是通過(guò)訪(fǎng)問(wèn)定向鏈接的時(shí)候(這個(gè)和短鏈不一樣,短鏈?zhǔn)轻槍?duì)本地app的账胧,長(zhǎng)鏈?zhǔn)强梢哉嬲L(fǎng)問(wèn)的http網(wǎng)頁(yè))竞慢,會(huì)上傳設(shè)備、ip治泥、時(shí)間戳等信息筹煮,在app啟動(dòng)的時(shí)候,再去異步向他們服務(wù)器請(qǐng)求短鏈居夹。也有和應(yīng)用市場(chǎng)合作败潦,先把信息傳遞給應(yīng)用市場(chǎng),在市場(chǎng)中打開(kāi)也可以定向跳轉(zhuǎn)准脂。ps:iOS中的實(shí)現(xiàn)好像是訪(fǎng)問(wèn)瀏覽器中的cookie劫扒。

方案很多,各有優(yōu)缺點(diǎn)狸膏,目前來(lái)看均可嘗試沟饥,結(jié)合各平臺(tái)的資源去實(shí)現(xiàn)。

總結(jié)

deeplink的使用大致就上述內(nèi)容环戈,還有深層次的內(nèi)容闷板,像是scheme協(xié)議等,有空深究了再做分享院塞。

備注

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市性昭,隨后出現(xiàn)的幾起案子拦止,更是在濱河造成了極大的恐慌,老刑警劉巖糜颠,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汹族,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡其兴,警方通過(guò)查閱死者的電腦和手機(jī)顶瞒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)元旬,“玉大人榴徐,你說(shuō)我怎么就攤上這事守问。” “怎么了坑资?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵耗帕,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我袱贮,道長(zhǎng)仿便,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任攒巍,我火速辦了婚禮嗽仪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘柒莉。我一直安慰自己钦幔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布常柄。 她就那樣靜靜地躺著鲤氢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪西潘。 梳的紋絲不亂的頭發(fā)上卷玉,一...
    開(kāi)封第一講書(shū)人閱讀 51,208評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音喷市,去河邊找鬼相种。 笑死,一個(gè)胖子當(dāng)著我的面吹牛品姓,可吹牛的內(nèi)容都是我干的寝并。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼腹备,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼衬潦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起植酥,我...
    開(kāi)封第一講書(shū)人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤镀岛,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后友驮,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體漂羊,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年卸留,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了走越。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡耻瑟,死狀恐怖旨指,靈堂內(nèi)的尸體忽然破棺而出赏酥,到底是詐尸還是另有隱情,我是刑警寧澤淤毛,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布今缚,位于F島的核電站,受9級(jí)特大地震影響低淡,放射性物質(zhì)發(fā)生泄漏姓言。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一蔗蹋、第九天 我趴在偏房一處隱蔽的房頂上張望何荚。 院中可真熱鬧,春花似錦猪杭、人聲如沸餐塘。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)戒傻。三九已至,卻和暖如春蜂筹,著一層夾襖步出監(jiān)牢的瞬間需纳,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工艺挪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留不翩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓麻裳,卻偏偏與公主長(zhǎng)得像口蝠,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子津坑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 一妙蔗、知識(shí)點(diǎn)回顧:Activity (一)、如何實(shí)現(xiàn)Activity頁(yè)面跳轉(zhuǎn)国瓮? 示例代碼: //第一種方式: Int...
    白話(huà)徐文濤閱讀 2,011評(píng)論 0 15
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,082評(píng)論 25 707
  • 用兩張圖告訴你灭必,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 12,714評(píng)論 2 59
  • 它吃紙乃摹。吃被這個(gè)人間寫(xiě)臟之后,遺棄的紙跟衅。細(xì)致地嚼爛如竹葉在風(fēng)中沙沙 他們說(shuō)話(huà)孵睬,每天重復(fù)地說(shuō)話(huà)從薄唇里吐出小石子把它...
    告別舊名字閱讀 106評(píng)論 0 3