我需要为 App Links 添加 <meta-data> 吗?

Do I need to include <meta-data> for App Links?

我的 Android 应用链接功能在我添加元数据标签之前无法使用:

<meta-data
android:name="asset_statements"
android:resource="@string/asset_statements"/>

这是我阅读的建议 here and here. However that is not mentioned by Google official documentation

所以...真的需要它还是我做错了什么?

(当我提到 App Links 不工作时,我应该注意到 deep link 工作但 Android 仍然显示 "default app chooser dialog")

更新#1: 我正在 Android 8.1 上进行测试。我已经上传了 .well-known/assetlinks.json 文件。这是我的 activity 处理深度 links:

<activity
    android:name=".LinkDispatcherActivity"
    <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" />
        <data android:scheme="https" />
        <data android:host="@string/www_app_domain" />
    </intent-filter>
</activity>

当您使用该元标记时,Android 将在安装时验证 "ownership"。只有在您的清单中使用该标签,您的应用程序才会在没有任何请求的情况下打开。我说的是选择器,您想打开哪个应用程序来处理您在清单中定义的 url。

您可以查看此命令以获取验证结果,它可能有助于您了解问题所在:

adb shell dumpsys package domain-preferred-apps

另请参阅相关文档:Verify Android App Links

好的,在@Michael 回复后我想我找到了原因。

该网站将 http 流量重定向到 https 流量。一旦我删除 <data android:scheme="http" /> ,我就可以评论 <meta-data> 标签。事实上,他们在文档中提到

Only if the system finds a matching Digital Asset Links file for all hosts in the manifest does it then establish your app as the default handler for the specified URL patterns.

我想这也适用于所有 "hosts" 和 "scheme",即使包含 <meta-data> 会有点覆盖该规则。

谢谢大家的回复。