我目前正在我的 Flutter 应用程序中实现 Firebase 动态链接,并且在使用链接打开应用程序时从动态链接中检索查询参数时遇到了问题。
我有一个名为 createDynamicLink 的函数,用于创建动态链接,并且我在主函数中使用 initDynamicLink 函数来在应用程序打开时监听动态链接。然而,即使链接不为空,名为“student”的查询参数始终显示为空。
String uriPrefix = 'https://example.page.link';
Future<String> createDynamicLink() async {
String appLink = 'https://example.page.link/zEgN?student=test';
final DynamicLinkParameters parameters = DynamicLinkParameters(
link: Uri.parse(appLink),
uriPrefix: uriPrefix,
androidParameters:
AndroidParameters(packageName: 'package.name'));
final FirebaseDynamicLinks link = FirebaseDynamicLinks.instance;
final refLink = await link.buildLink(parameters);
return refLink.toString();
}
Future<void> initDynamicLink() async {
final PendingDynamicLinkData? initialLink =
await FirebaseDynamicLinks.instance.getInitialLink();
print("DEEP LINK INITIAL $initialLink");
FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) async {
final Uri? deepLink = dynamicLinkData.link;
final PendingDynamicLinkData? initialLink =
await FirebaseDynamicLinks.instance.getInitialLink();
print("DEEP LINK INITIAL ON LISTEN ${initialLink}");
Share.share(' 5555 ${initialLink?.link}');
print(
"DEEP QUERY PARAMETER ON LISTEN ${dynamicLinkData.link.queryParameters['student']}");
print("DEEP LINK ON LISTEN ${dynamicLinkData.link}");
});
问题是查询参数“student”始终为空,即使深层链接本身不为空。我已经仔细检查了链接创建,它似乎是正确的。任何有关查询参数未正确检索的原因的见解将不胜感激。
1-在 Firebase 控制台上手动验证动态链接 2-在代码中确认链接创建 在物理设备上经过 3 次测试的动态链接:
仅供参考,Firebase 动态链接已弃用,将于 2025 年 8 月 25 日关闭
你能试试这个并告诉我打印了什么吗?
Future<void> initDynamicLink() async {
final PendingDynamicLinkData? initialLink =
await FirebaseDynamicLinks.instance.getInitialLink();
var deepLink = initialLink?.link;
final queryParams = deepLink?.queryParameters;
print("deepLink $deepLink queryParams $queryParams ");
if (queryParams != null) {
final params = queryParams["student"]!;
FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) async {
var deepLink = dynamicLinkData.link;
print('DynamicLinks onLink $deepLink');
Share.share(' 5555 $deepLink');
}, onError: (e) async {
print('DynamicLinks onError $e');
});
} else {
print('no query params');
}
}
希望对你调试有帮助