目錄
什么是 App Linking
使用場景
工作原理
如何開發
1.開通 App Linking
2.確定域名
3.服務端部署 applinking.json 文件
4.AGC綁定域名?
5.項目配置
6.組裝聚合鏈接
7.解析聚合鏈接中的參數
其他
如何獲取應用ID
什么是 App Linking
App Linking 是一款創建跨平臺的深度聚合鏈接。通過為用戶提供無縫的內容瀏覽體驗,提升用戶轉化率。
- 若用戶已安裝應用,點擊點擊鏈接后將直達應用內指定頁面。
- 若未安裝,且已配置跳轉應用市場,則跳轉應用市場進行下載,待安裝完成后用戶首次打開應用,仍將跳轉至該頁面。如果未配置跳轉應用市場,則自動打開瀏覽器加載對應的網頁內容。


使用場景
掃碼直達、短信鏈接直達、社交平臺卡片分享等場景。
工作原理
如何開發
開發前注意事項:使用 App Linking 需使用手動生成簽名,自動簽名將無法啟動應用。
1.開通 App Linking
2.確定域名
在配置前需確定域名,并確保域名完成https配置且能正常訪問,后續在 AGC 與項目中需進行相關配置。
3.服務端部署 applinking.json 文件
在服務端部署 applinking.json 文件至指定目錄,這里我們手動創建即可,確保能通過我們配置的域名地址:https://域名/.well-known/applinking.json 訪問到 applinking 配置,如何獲取應用ID可查看文章末尾。
{"applinking": {"apps": [{"appIdentifier": "你的應用id"}]}
}
4.AGC綁定域名?
在第 1?步開通 App Linking 后,選擇“應用鏈接-創建”,填入域名地址進行發布,發布后,若第 3 步的配置文件可正常訪問,等待幾分鐘后看到“成功”狀態,則代表域名配置成功。若出現其他錯誤狀態,需檢查配置文件是否可被訪問。
5.項目配置
進入項目的 entry 模塊下的 module.json5 文件,新增 App Linking 的 skills 配置。
?示例代碼:
{"entities": [// entities必須包含"entity.system.browsable""entity.system.browsable"],"actions": [// actions必須包含"ohos.want.action.viewData""ohos.want.action.viewData"],"uris": [{// scheme須配置為https"scheme": "https",// host須配置為關聯的域名,替換為你AGC配置的域名"host": "www.eeeo.cc",// path可選,表示域名服務器上的目錄或文件路徑,例如www.example.com/path1中的path1// 如果應用只能處理部分特定的path,則此處應該配置應用所支持的path,避免出現應用不能處理的path鏈接也被引流到應用中的問題,替換為你的二級path,用于精確分流"path": "share"}],// domainVerify須設置為true"domainVerify": true
}
6.組裝聚合鏈接
上述配置中,path用于精確分流,可用于指定二級地址,當前項目中配置的path為share,即當我們在鴻蒙設備中點擊鏈接 https://www.eeeo.cc/share 后會優先啟動應用,當我們需要傳遞參數時,可使用 ? + & 的形式拼接 KeyValue 即可。
https://www.eeeo.cc/share?pageId=2025&channel=web
7.解析聚合鏈接中的參數
通過聚合鏈接啟動應用后,參數會進入到 Ability 的?onCreate 生命周期的 Want.uri 中,若應用已經啟動,則會進入到?onNewWant?生命周期的 Want.uri 中。此時我們解析 uri 中的 KeyValue 即可。
示例代碼如下:
import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
import { url } from '@kit.ArkTS';export default class EntryAbility extends UIAbility {onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {// 從want中獲取傳入的鏈接信息。// 如傳入的url為:https://www.example.com/programs?action=showalllet uri = want?.uri if (uri) {// 從鏈接中解析query參數,拿到參數后,可根據自己的業務需求進行后續的處理。let urlObject = url.URL.parseURL(want?.uri);let pageId = urlObject.params.get('pageId')let channel= urlObject.params.get('channel') }}
}
其他
如何獲取應用ID
?登錄AppGallery Connect,點擊“我的項目”,若已創建項目,可直接在首頁查看到應用ID。若未創建項目,手動創建后則會自動生成。