Flutter Web 如何为 Android 应用程序链接验证提供文件 assetlinks.json

Flutter Web how to serve file assetlinks.json for Android App Links verification

我正在 Firebase Hosting. 上部署 Flutter Web 应用程序

Flutter 应用程序 Android

要使用重定向到我的 Android 应用程序的应用程序链接,我需要在 https://example.com/.well-known/assetlinks.json

上验证提供文件 assetlinks.json 的应用程序链接

如何在没有 3XX 重定向的情况下从我的域(即使用 firebase 托管在 Web 上部署的 Flutter)提供文件?

如果我没记错的话,Firebase 将文件存储在所谓的存储桶中。 存储桶可以直接暴露在互联网上,或者您可以使用 API 拉取您需要的文件并将其放在您域中 public 的某处:

https://firebase.google.com/docs/storage/web/list-files

要查看如何在云桶中发布文件,这里有一个很好的答案:

How do you make many files public in Google Cloud Storage?

请注意,所描述的方法提供了 public 访问权限,因此请确保只公开您想要的内容。

.well-know文件夹和文件添加到Flutter项目的web文件夹即可。

并更改 firebase.json 添加 headers 并重写条目。

{
  "hosting": {
    "public": "build/web",
    "appAssociation": "NONE",
    "ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
    "headers": [
      {
        "source": "/.well-known/assetlinks.json",
        "headers": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ]
      }
    ],
    "rewrites": [
      {
        "source": "/.well-known/assetlinks.json",
        "destination": "/.well-known/assetlinks.json"
      },
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}

再次构建和部署,文件现在可以访问了!

感谢您提供的简单指南 https://blog.bam.tech/developer-news/universal-links-firebase-hosting-and-flutter-web