Android Studio 2.3 特性:生成Android App Links

移動(dòng)應(yīng)用開發(fā)時(shí)常遇到應(yīng)用跳轉(zhuǎn)、h5喚起原生頁(yè)面等使用場(chǎng)景,所以一個(gè)健壯的應(yīng)用需要具備路由的能力。常見的操作方法需要在manifest中針對(duì)每個(gè)頁(yè)面進(jìn)行配置,設(shè)想應(yīng)用有大量的頁(yè)面那配置工作豈不是費(fèi)時(shí)費(fèi)力,所以我們便來(lái)一起看看Android Studio 2.3給我們帶來(lái)了什么便利

概覽及使用

App Links是Android M以上的特有功能,即實(shí)現(xiàn)了auto-verify支持用戶點(diǎn)擊一個(gè)鏈接即可喚起APP,而不用像以往版本中需要點(diǎn)擊一個(gè)選擇框列表。為了使自己的應(yīng)用支持App Links,我們常需要以下三個(gè)步驟:

  • 在manifest中創(chuàng)建Intent filter
  • 在Activity中編寫對(duì)應(yīng)的代碼邏輯處理收到的url links
  • 通過(guò)配置證書文件,關(guān)聯(lián)網(wǎng)頁(yè)和應(yīng)用

Android Studio 2.3及以上版本中提供了App Links Assistant協(xié)助開發(fā)者進(jìn)行快速配置,該功能可在tools > App Links Assistant中開啟。

App Links Assistant

配置Intent filsters

首先打開URL匹配規(guī)則編輯器,配置基本的Scheme、Host等信息,并指定關(guān)聯(lián)的Activity對(duì)這塊不是很了解的同學(xué)可以點(diǎn)擊App Manifest了解各個(gè)字段的含義以及優(yōu)先級(jí)。

URL Mapping

配置完畢后可查看已配置的映射的關(guān)系,并可以通過(guò)輸入U(xiǎn)RL進(jìn)行校驗(yàn)是否調(diào)通

URL-to-Activity

選擇Activity

配置好mapping后,點(diǎn)擊Select Activity選擇上述配置好的Activity可自動(dòng)生成以下代碼。變量appLinkData以Uri的形式存儲(chǔ)了進(jìn)行傳遞的數(shù)據(jù),針對(duì)具體頁(yè)面開發(fā)者可編寫特定的處理邏輯。

        // ATTENTION: This was auto-generated to handle app links.
        Intent appLinkIntent = getIntent();
        String appLinkAction = appLinkIntent.getAction();
        Uri appLinkData = appLinkIntent.getData();

關(guān)聯(lián)應(yīng)用

前兩步已經(jīng)使我們的應(yīng)用具備了URL支持,在最后一步中我們將生成站點(diǎn)的配置文件,使其能夠喚起我們的應(yīng)用。此處需要根據(jù)個(gè)人用途選擇Signing configkeystore并選擇debug/release類型,點(diǎn)擊生成的配置文件為assetlinks.json,并將其上傳至自己的站點(diǎn)。

Associate Website

根據(jù)官方文檔,特別注意的是系統(tǒng)識(shí)別Links需要通過(guò)https協(xié)議,故我們需要確保assetlinks.json可以通過(guò)https鏈接,無(wú)論我們的應(yīng)用是否在Intent-filter中包含了https

通過(guò)配置assetlinks.json我們可以使站點(diǎn)具備喚起單一APP或者多個(gè)APP的能力,文件中使用了以下字段來(lái)關(guān)聯(lián)app:

  • package_name 即manifest中定義的包名
  • sha256_cert_fingerprints 即應(yīng)用的sha256指紋證書

而指紋證書可以調(diào)用命令行進(jìn)行生成
$ keytool -list -v -keystore my-release-key.keystore
若需要關(guān)聯(lián)多個(gè)app,可以參照下面的格式進(jìn)行配置

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "example.com.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": "example.com.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"]
  }
}]

最后點(diǎn)擊Test App Links可以在設(shè)備或模擬器上進(jìn)行測(cè)試。

后記

缺陷

使用App Links能為開發(fā)者帶來(lái)福利,但目前仍然有幾個(gè)不可忽視的缺陷:

  • 當(dāng)app配置好了對(duì)App Links的支持之后,只有運(yùn)行在Android M上的用戶才能直接體會(huì)到這項(xiàng)好處
  • 開發(fā)者需要維護(hù)與App相關(guān)聯(lián)的站點(diǎn),并支持上傳認(rèn)證文件,可能造成更大的財(cái)力精力開銷

擴(kuò)展

利用App Links Assistant我們可以快速配置應(yīng)用全局路由的支持,由于manifest中已存在url與activity的映射關(guān)系,我們可以基于Intent和PackageManager設(shè)計(jì)一個(gè)簡(jiǎn)單的路由框架。比起手動(dòng)在manifest增刪,App Links Assistant能幫助我們高效管理當(dāng)前的映射關(guān)系并進(jìn)行測(cè)試。

參考文獻(xiàn)

1.Handling App Links
2.Add Android App Links

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容