如何在flutter应用程序中进行appLinking/deeplinking,包括意图过滤器和域/url验证?

问题描述 投票:0回答:1

需要帮助逐步实现 Flutter 中的应用程序链接/深度链接(适用于 Android)

flutter deep-linking android-app-links
1个回答
0
投票

以下答案将帮助任何正在寻找在 flutter 应用程序中启用应用程序链接的人。(答案不包括有关打开应用程序后处理 url 的信息,它只是提供设置 applinking 和 assetlink.json 文件的信息)

flutter 中的 App-Linking 可以分为 2 个步骤 -

  1. 应用程序中的意图过滤和处理。
  2. 验证域名/ URL。

对于意图过滤器 -

在 AndroidManifest 文件中,位于 - app>src>main,在具有其他 Intent 过滤器的 Activity 内,您需要添加 Intent 过滤器来处理 url :

            <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="domainname1.com" />
            <data android:host="domainname2.com" />

        </intent-filter>

您可以添加要在应用程序内处理的域名来代替domainname1.com和domainname2.com,这里您通过单击网址打开应用程序的工作已完成。

验证域名 - 您需要添加一个包含 sha256 密钥和包名称的 assetlinks.json 文件,该文件确认该应用程序与该特定域相关。

对于此步骤,您可以前往assetlinks.json 验证。这里可以指定应用的域名、应用包名、sha256密钥。然后单击生成语句,它将提供您必须托管文件的路径,文件名和 url 应完全按照指定。

这里你需要注意两件事 -

  1. 包名称和 sha256 密钥是正确的,单个应用程序的 sha256 可以是多个,例如调试模式和发布模式有不同的密钥,并且应用程序链接仅适用于特定应用程序(如果存在正确的密钥),如果您想添加您可以按以下方式执行多个键:
[
  {
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
      "namespace": "android_app",
      "package_name": "<package_name_here>",
      "sha256_cert_fingerprints": ["B8:..<complete sha256 key>..:38"]
    }
  },
  {
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "<package_name_here>",
    "sha256_cert_fingerprints": ["A5:..<other complete sha256 key>..:38"]
  }
}
]
  1. 上传2-3分钟后,您可以使用测试语句按钮进行测试,如果仍然显示错误,请确保上传的文件位于正确的路径中(您可以通过查看该网址来检查),并确保托管时的文件格式是json,您可以通过检查标头中的内容类型来检查托管文件是否为json。

您还可以使用此命令来检查应用程序网址是否已验证

adb shell pm get-app-links <your_package_name>

如果 url 被写入经过验证,那么一切都可以完美运行。

注意:这些步骤只会设置在您的应用程序中打开特定的 URL,但您仍然需要进行路由或使用 gorouter 来处理使用特定 URL 打开应用程序时应用程序内部发生的情况。如果需要任何帮助,您可以在评论中添加

© www.soinside.com 2019 - 2024. All rights reserved.