如何实现动态应用链接

动态应用链接让您可以管理网络服务器上的特定规则,为您提供更大的灵活性,对深层链接有更强的掌控能力。这意味着,您无需发布应用的新版本,即可更改用户从网站网址重定向到应用的方式。详细了解动态应用链接。

本文介绍了如何实现动态应用链接。

本页内容


如何实现动态应用链接

实现动态应用链接涉及同时配置应用的清单和网站的 assetlinks.json 文件。请按以下步骤开始操作。

第 1 步(共 2 步):配置应用的清单

动态应用链接的最佳实践是在 AndroidManifest.xml 文件中声明尽可能广泛的范围,再使用 assetlinks.json 文件设置更具体的路由规则。这种做法为您带来极大的灵活性,方便您日后在服务器上添加或更改路径。

在清单中配置 intent 过滤器以处理网页链接并启用验证。

AndroidManifest.xml

<<activity
    android:name=".MainActivity"
    android:exported="true">
    <!-- 确保您明确将 android:autoVerify 设置为“true”。-->
    <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" />


        <!-- 同时包含“http”和“https”协议以进行验证。-->
        <data android:scheme="http" />
        <data android:scheme="https" />


        <!-- 包含一个或多个应验证的域名。-->
        <!-- 使用通配符 (*) 来支持多个子域名。-->
        <data android:host="www.example.com" />
        <data android:host="*.example.com" />
    </intent-filter>
</activity>

注意:

  • android:autoVerify="true":此属性必须设置,用于指示系统验证应用与您指定的域名之间的关联。
  • <data android:scheme...>:您必须同时包含 http 和 https,intent 过滤器才能符合验证条件。
  • <data android:host...>:列出您的应用应处理的所有域名。您可以使用通配符 (*.example.com) 来匹配所有子域名。

第 2 步(共 2 步):配置网站的 assetlinks.json 文件

在您的网络服务器上创建或更新 assetlinks.json 文件,以声明与应用的关联并指定动态路由规则。

发布要求:

  • 该文件必须可通过 https://<your-domain>/.well-known/assetlinks.json 访问。
  • 必须通过 HTTPS 提供服务,且不经过任何重定向。
  • 必须与 Content-Type: application/json 标头一起提供。
  • 您必须在要支持的每个网域上托管单独的文件。

assetlinks.json

[
  {
    "relation": [
      "delegate_permission/common.handle_all_urls"
    ],
    "target": {
      "namespace": "android_app",
      "package_name": "com.example.app",
      "sha256_cert_fingerprints": ["..."]
    },
    "relation_extensions": {
      "delegate_permission/common.handle_all_urls": {
        "dynamic_app_link_components": [
          {"/": "/products/*"},
          {"/": "/shoes", "?": {"in_app": "true"}},
          {"/": "/legacy/*", "exclude": true},
          {"/": "*", "?": {"no_dl": "*"}},
          {"#": "app"}
        ]
      }
    }
  }
]

注意:

  • package_name:必须与应用 build.gradle 文件中的 applicationId 一致。
  • sha256_cert_fingerprints:应用签名证书的 SHA-256 指纹。
    • 重要提示:如果您使用 Play 应用签名,则必须从 Google Play 管理中心的发布版本> 设置> 应用签名下获取此值。由本地 keytool 命令生成的指纹将无法匹配。
  • dynamic_app_link_components:这是一个 JSON 对象数组,您可以在其中指定规则。每个对象都可以为路径 (/)、查询 (?) 和 fragment (#) 指定条件,以及 exclude 标志。
  • 格式有误的字段:如果系统在 dynamic_app_link_components 数组中检测到任何格式有误的字段,它将舍弃所有动态规则,并回退到清单中指定的规则。

如何测试深层链接路由并验证网站关联

完成实现后,需同时测试应用的路由逻辑和域名验证流程。

第 1 步(共 2 步):测试深层链接路由

使用 Android 调试桥 (ADB) 来模拟深层链接 intent,并验证您的应用是否会打开并跳转到正确的页面。此测试不会验证网站关联。

$ adb shell am start \
    -W -a android.intent.action.VIEW \
    -d "https://www.example.com/products/123" com.example.app

第 2 步(共 2 步):测试应用链接验证

请按以下步骤操作,测试系统是否已正确验证您的网站关联。

  1. 验证 assetlinks.json 文件:使用 Digital Asset Links API 确保您的 JSON 文件格式正确且可访问。在浏览器中打开以下网址,并将 www.example.com 替换为您的域名:https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://www.example.com&relation=delegate_permission/common.handle_all_urls
  2. 重置设备上的应用链接状态:为确保测试环境清洁,请重置应用当前的应用链接状态。
$ adb shell pm set-app-links --package com.example.app 0 all
  1. 强制系统重新验证:此命令会告知系统立即提取 assetlinks.json 文件并运行验证流程
$ adb shell pm verify-app-links --re-verify com.example.app
  1. 查看验证结果:等待片刻,然后运行以下命令查看结果。
$ adb shell pm get-app-links com.example.app
  1. 确认域名验证状态为 verified:其他状态(例如 denied 或 legacy_failure)表示存在问题。

相关链接

本页面可能包含使用 AI 技术翻译的内容。AI 翻译未必准确无误。
false
Achieve your advertising goals today!

Attend our Performance Max Masterclass, a livestream workshop session bringing together industry and Google ads PMax experts.

Register now

搜索
清除搜索内容
关闭搜索框
主菜单
2439951544346790747
true
搜索支持中心
true
true
true
true
true
true
73067
false
false
true
true
false
false
⌂ 换网址