AppLink

簡(jiǎn)介

大家好!我是Tony,一個(gè)熱愛技術(shù),希望運(yùn)用技術(shù)改變生活的的追夢(mèng)男孩。閑話不多說(shuō)乏屯,之前我總結(jié)過iOS的Universal Links,今天帶大家探索一下Android的 AppLink阔墩。

AppLink的能力

App Link是一種特殊類型的DeepLink,可讓您的網(wǎng)站網(wǎng)址立即打開Android應(yīng)用程序中的相應(yīng)內(nèi)容(無(wú)需用戶選擇應(yīng)用程序)瓶珊。

Android官方培訓(xùn)文檔翻譯

Android應(yīng)用程序鏈接是一種特殊類型的深層鏈接啸箫,可讓您的網(wǎng)站網(wǎng)址立即打開Android應(yīng)用程序中的相應(yīng)內(nèi)容(無(wú)需用戶選擇應(yīng)用程序)。
??要將Android應(yīng)用程序鏈接添加到您的應(yīng)用程序伞芹,請(qǐng)定義使用HTTP URL打開您的應(yīng)用程序內(nèi)容的意圖過濾器(如創(chuàng)建應(yīng)用程序內(nèi)容的深層鏈接所述)忘苛,并確認(rèn)您擁有應(yīng)用程序和網(wǎng)站URL(如本指南中所述)。如果系統(tǒng)成功驗(yàn)證您擁有這些網(wǎng)址唱较,則系統(tǒng)會(huì)自動(dòng)將這些網(wǎng)址意圖路由到您的應(yīng)用扎唾。
?? 要驗(yàn)證您的應(yīng)用程序和您的網(wǎng)站的所有權(quán),需要執(zhí)行以下步驟:

在清單中請(qǐng)求自動(dòng)應(yīng)用鏈接驗(yàn)證南缓。這向Android系統(tǒng)表明胸遇,它應(yīng)該驗(yàn)證您的應(yīng)用屬于您的意圖過濾器中使用的URL域。
通過在以下位置托管一個(gè)數(shù)字資產(chǎn)鏈接JSON文件來(lái)聲明您的網(wǎng)站和您的意圖過濾器之間的關(guān)系:

https://domain.name/.well-known/assetlinks.json
深層鏈接與應(yīng)用鏈接的區(qū)別

深層鏈接是一個(gè)意圖過濾器汉形,允許用戶直接在您的Android應(yīng)用程序中輸入特定的活動(dòng)纸镊。點(diǎn)擊其中一個(gè)鏈接可能會(huì)打開一個(gè)消歧義對(duì)話框,允許用戶從多個(gè)應(yīng)用程序(包括您的)中選擇一個(gè)可以隱藏給定URL的應(yīng)用程序概疆。例如逗威,圖1顯示用戶點(diǎn)擊地圖鏈接后的消歧義對(duì)話框,詢問是否在地圖或Chrome中打開鏈接岔冀。


ResolverActivity
請(qǐng)求應(yīng)用鏈接驗(yàn)證

要為您的應(yīng)用啟用鏈接處理驗(yàn)證凯旭,請(qǐng)?jiān)谀膽?yīng)用清單中的任何一個(gè)Web URL意圖過濾器中設(shè)置android:autoVerify =“true”,其中包括android.intent.action.VIEW意圖操作和android.intent.category.BROWSABLE意圖類別使套,如以下清單代碼段所示:

<activity ...>

    <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="http" android:host="www.example.com" />
        <data android:scheme="https" />
    </intent-filter>

</activity>

當(dāng)任何一個(gè)意圖過濾器上都存在android:autoVerify =“true”時(shí)罐呼,在Android 6.0及更高版本的設(shè)備上安裝應(yīng)用程序會(huì)導(dǎo)致系統(tǒng)嘗試驗(yàn)證與您的應(yīng)用程序意圖過濾器中的URL相關(guān)的所有主機(jī)。
驗(yàn)證涉及以下內(nèi)容: 系統(tǒng)檢查所有意圖過濾器侦高,包括: 操作:android.intent.action.VIEW 類別:android.intent.category.BROWSABLE和android.intent.category.DEFAULT 數(shù)據(jù)方案:http或https 對(duì)于在上述意向過濾器中找到的每個(gè)唯一主機(jī)名嫉柴,Android會(huì)通過https://hostname/.well-known/assetlinks.json查詢數(shù)字資產(chǎn)鏈接文件的相應(yīng)網(wǎng)站。 只有當(dāng)系統(tǒng)為清單中的所有主機(jī)找到匹配的數(shù)字資產(chǎn)鏈接文件時(shí)矫膨,才會(huì)將您的應(yīng)用程序建立為指定URL模式的默認(rèn)處理程序差凹。

支持多個(gè)主機(jī)的應(yīng)用程序鏈接

系統(tǒng)必須能夠根據(jù)托管在所有相應(yīng)網(wǎng)域上的數(shù)字資產(chǎn)鏈接文件來(lái)驗(yàn)證應(yīng)用的URL意圖過濾器的數(shù)據(jù)元素中指定的每個(gè)主機(jī)期奔。如果任何驗(yàn)證失敗侧馅,則該應(yīng)用程序不會(huì)被驗(yàn)證為應(yīng)用程序意圖過濾器中定義的任何URL模式的默認(rèn)處理程序。然后呐萌,系統(tǒng)會(huì)默認(rèn)使用其標(biāo)準(zhǔn)行為來(lái)解析意圖馁痴,如創(chuàng)建應(yīng)用程序內(nèi)容的深層鏈接中所述。 ??例如肺孤,如果在https://www.example.com/.well-known/assetlinks.json和https://www.example上找不到assetlinks.json文件罗晕,則具有以下意向過濾器的應(yīng)用將無(wú)法通過驗(yàn)證達(dá)網(wǎng)絡(luò)/济欢。好知/ assetlinks.json:

<application>

  <activity android:name=”MainActivity”>
    <intent-filter android:autoVerify="true">
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="http" android:host="www.example.com" />
      <data android:scheme="https" />
    </intent-filter>
  </activity>
  <activity android:name=”SecondActivity”>
    <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="https" android:host="www.example.net" />
    </intent-filter>
  </activity>

</application>

請(qǐng)記住,同一個(gè)intent過濾器中的所有<data>元素會(huì)合并在一起小渊,以說(shuō)明其組合屬性的所有變體法褥。例如,上面的第一個(gè)intent過濾器包含一個(gè)僅聲明HTTPS方案的<data>元素酬屉。但是它與其他的<data>元素結(jié)合使用半等,意圖過濾器同時(shí)支持http://www.example.comhttps://www.example.com。因此呐萨,如果要定義特定的URI方案和域組合杀饵,則必須創(chuàng)建單獨(dú)的意向過濾器。

支持多個(gè)子域名的應(yīng)用鏈接

數(shù)字資產(chǎn)鏈接協(xié)議將您的意圖過濾器中的子域視為唯一的獨(dú)立主機(jī)谬擦。因此切距,如果您的意圖過濾器列出了具有不同子域的多個(gè)主機(jī),則必須在每個(gè)域上發(fā)布有效的assetlinks.json惨远。例如谜悟,以下intent過濾器將www.example.commobile.example.com包括為接受的意向URL主機(jī)。因此北秽,必須在https://www.example.com/.well-known/assetlinks.jsonhttps://mobile.example.com/.well-known/assetlinks.json上發(fā)布有效的assetlinks.json赌躺。

<application>
  <activity android:name=”MainActivity”>
    <intent-filter android:autoVerify="true">
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="https" android:host="www.example.com" />
      <data android:scheme="https" android:host="mobile.example.com" />
    </intent-filter>
  </activity>
</application>

或者,如果您使用通配符聲明主機(jī)名(例如 .example.com)羡儿,則必須以根主機(jī)名(example.com)發(fā)布assetlinks.json文件礼患。例如,只要assetlinks.json文件在https://example.com/發(fā)布掠归,具有以下意向過濾器的應(yīng)用程序就會(huì)通過example.com的任何子名稱(例如foo.example.com)的驗(yàn)證.well-known / assetlinks.json:

<application>
  <activity android:name=”MainActivity”>
    <intent-filter android:autoVerify="true">
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="https" android:host="*.example.com" />
    </intent-filter>
  </activity>
</application>

以下示例assetlinks.json文件授予對(duì)com.example Android應(yīng)用程序的鏈接開放權(quán)限:

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example",
    "sha256_cert_fingerprints":
 ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
  }
}]

將網(wǎng)站與多個(gè)應(yīng)用程序關(guān)聯(lián):

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example.puppies.app",
    "sha256_cert_fingerprints":
    ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
  }
  },
  {
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example.monkeys.app",
    "sha256_cert_fingerprints":
    ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
  }
}]

發(fā)布JSON驗(yàn)證文件

https://domain.name/.well-known/assetlinks.json

[參考鏈接](http://www.reibang.com/p/6ff6dbcc569e
Android deeplink和AppLink原理

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末缅叠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子虏冻,更是在濱河造成了極大的恐慌肤粱,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厨相,死亡現(xiàn)場(chǎng)離奇詭異领曼,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蛮穿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門庶骄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人践磅,你說(shuō)我怎么就攤上這事单刁。” “怎么了府适?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵羔飞,是天一觀的道長(zhǎng)肺樟。 經(jīng)常有香客問我,道長(zhǎng)逻淌,這世上最難降的妖魔是什么么伯? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮卡儒,結(jié)果婚禮上蹦狂,老公的妹妹穿的比我還像新娘。我一直安慰自己朋贬,他們只是感情好凯楔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锦募,像睡著了一般摆屯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上糠亩,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天虐骑,我揣著相機(jī)與錄音,去河邊找鬼赎线。 笑死廷没,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的垂寥。 我是一名探鬼主播颠黎,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼滞项!你這毒婦竟也來(lái)了狭归?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤文判,失蹤者是張志新(化名)和其女友劉穎过椎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體戏仓,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疚宇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赏殃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片敷待。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖嗓奢,靈堂內(nèi)的尸體忽然破棺而出讼撒,到底是詐尸還是另有隱情,我是刑警寧澤股耽,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布根盒,位于F島的核電站,受9級(jí)特大地震影響物蝙,放射性物質(zhì)發(fā)生泄漏炎滞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一诬乞、第九天 我趴在偏房一處隱蔽的房頂上張望册赛。 院中可真熱鬧,春花似錦震嫉、人聲如沸森瘪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)扼睬。三九已至,卻和暖如春悴势,著一層夾襖步出監(jiān)牢的瞬間窗宇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工特纤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留军俊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓捧存,卻偏偏與公主長(zhǎng)得像粪躬,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子昔穴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

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