首页 > 解决方案 > deeplinkassetlinks 验证一台服务器,但不验证其他 Android 应用程序

问题描述

我有一个 Android 应用程序,它可以基于调试/发布版本与登台服务器和生产服务器通信。这些构建可以通过 3 个不同的密钥(自定义调试、上传密钥或播放商店签名密钥)中的任何一个进行签名。

为了处理这种情况,我添加了以下文件以/.well-known/assetlinks.json从两台服务器(登台和生产)提供服务。我尝试使用带有 content-type = application/json 的 chrome 和 postman 来拉它。

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "<package_id>",
    "sha256_cert_fingerprints":
    ["<hashOfKey1>"]
  }
},
{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "<package_id>",
    "sha256_cert_fingerprints":
    ["<hashOfKey2>"]
  }
},
{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "<package_id>",
    "sha256_cert_fingerprints":
    ["<hashOfKey3>"]
  }
}
] 

此外,intent-filter 的数据中的主机是使用 manifestPlaceholders 指定的(这似乎工作正常),如下所示:

                   <data
                    android:host="${hostName}"
                    android:path="/dashboard/profile/private"
                    android:scheme="https"
                    />

问题 当我构建调试(与登台服务器对话)应用程序时,应用程序可以很好地处理登台网址。但是当我构建发布应用程序时(我尝试通过签署自定义调试密钥和上传密钥),应用程序不处理生产 URL。

我无法弄清楚它不适用于生产链接。

标签: androiddeep-linking

解决方案


在寻找找到确切问题的方法后,我找到了标准工具。 https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https:// <domain_as_per_manifest>&relation=delegate_permission/common.handle_all_urls

问题是我指定example.com了内部assetlinks.json 请求并由www.example.com(我不知道)重定向和服务。当我使用上述工具时,它向我显示不允许重定向。


推荐阅读