如何在动态链接中传递参数?

How do I pass Parameters in Dynamic Links?

如何在 flutter 中接收来自 firebase 动态 links 的参数?

我创建了一个短片 url:

https://subdomain.example.com/product

指向

https://example.com/view-product

但我想添加一个 url 查询参数,例如:

https://example.com/view-product?id=56

请注意,“56”是可变的,会在应用程序流程中动态变化。我无法接收此 "id" 参数。

我尝试在浏览器上输入 https://subdomain.example.com/product?id=56

我收到了link:https://example.com/view-product

     FirebaseDynamicLinks.instance.onLink(
        onSuccess: (PendingDynamicLinkData dynamicLink) async {

      final Uri deepLink = dynamicLink?.link;

      showModalBottomSheet(context: context, builder: (context){
        return Container(
          height: 100.0,
          child: Text(deepLink.toString()),
        );
      });
      if (deepLink != null) {
        debugPrint("Link found on line: "+deepLink.queryParameters.toString());

      }
    }, onError: (OnLinkErrorException e) async {
      print('onLinkError');
      print(e.message);
    });

我终于明白了!

我对这个概念的理解完全错误。

目前有 4 种创建动态 links 的方法。

1) Firebase Console
2) Manually
3) Rest API
4) Dynamic Link Builder API on iOS and Android 

我在这里做错的是,我从 firebase 控制台创建了 https://subdomain.example.com/product 动态 link 并针对手动创建的 link.

对其进行了测试

第二种方法(手动)更强大,因为您需要 link 来自您网站的动态内容 links。

https://your_subdomain.page.link/?link=your_deep_link&apn=package_name[&amv=minimum_version][&afl=fallback_link]

上面提到的是创建动态 links 的标准手动过程。

让我们把上面的 link 分解一下,让它看起来不那么可怕:

  • https://your_subdomain.page.link ==> This is simply your subdomain you registered on firebase console. In our case it's https://subdomain.example.com

  • link=your_deep_link ==> your_deep_link 基本上是你的深度 link(你想要打开的 link存在于您的服务器上,它可以包含您需要的所有参数)。在我们的例子中是 https://example.com/view-product?id=56。但请注意,此 link 将嵌入到 url 中,因此需要先对其进行 url 编码。为此使用任何 url 编码器。生成的编码字符串变为

https%3A%2F%2Fexample.com%2Fview-product%3Fid%3D56

  • apn=package_name ==> IOS 或 Android

  • 各自的包名
  • [&amv=minimum_version] ==> "[]"表示这个为可选参数。此参数是您希望您的应用响应此动态的最低应用版本号 link(如果您希望所有版本都支持,则为 0)

  • [&afl=fallback_link] ==> ==> "[]"表示这个为可选参数。这是回退 url,再次 url 编码。可能是您的 android 游戏商店 link.

所以我们的最终动态 link 看起来像:

https://subdomain.example.com/?link=https%3A%2F%2Fexample.com%2Fview-product%3Fid%3D56&apn=com.example&amv=0