如何在动态链接中传递参数?
How do I pass Parameters in Dynamic Links?
如何在 flutter 中接收来自 firebase 动态 links 的参数?
我创建了一个短片 url:
指向
但我想添加一个 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。
上面提到的是创建动态 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 看起来像:
如何在 flutter 中接收来自 firebase 动态 links 的参数?
我创建了一个短片 url:
指向
但我想添加一个 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。
上面提到的是创建动态 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 看起来像: