我正在尝试向动态链接添加动态参数。
例如,如果我将 https://xyz.page.link/promo?id=1
添加到 firebase 控制台。我希望 id=1 应该是动态的,即使用相同的链接,我可以将其传递给不同的 id,而不是为每个 id 创建链接并每次检查代码以从下面提到的 getRoute() 重定向到 Flutter 屏幕。
有人可以建议一些方法来实现这一目标吗?
// Flutter imports:
import 'package:flutter/material.dart';
// Package imports:
import 'package:firebase_dynamic_links/firebase_dynamic_links.dart';
// Project imports:
import 'package:xyz/src/ui/home_screen.dart';
import 'package:xyz/src/ui/promo_screen.dart';
class DynamicLinksService {
static Future<Widget> initDynamicLinks() async {
final PendingDynamicLinkData? data = await FirebaseDynamicLinks.instance.getInitialLink();
if (data != null){
return getRoute(data.link);
}
FirebaseDynamicLinks.instance.onLink(
onSuccess: (PendingDynamicLinkData? dynamicLink) async {
return getRoute(dynamicLink!.link);
}, onError: (OnLinkErrorException e) async {
print('onLinkError');
return e.message;
});
return HomeScreen();
}
static Widget getRoute(deepLink){
if (deepLink.toString().isEmpty) {
return HomeScreen();
}
if (deepLink.path == "/promo") {
final id = deepLink.queryParameters["id"];
if (id!= null) {
return PromoScreen(id: id);
}
}
return HomeScreen();
}
}
谢谢
阿金基亚·塔拉内卡
最佳答案
我可以与您分享我用来创建带参数的动态链接的代码:
class DynamicLinksService {
static Future<Uri> getGroupDynamicLink(
BuildContext context, String id) async {
final DynamicLinkParameters parameters = DynamicLinkParameters(
uriPrefix: 'https://my_page.page.link',
link: Uri.parse(
'https://my_page.page.link/add_group/?id=${id}'),
dynamicLinkParametersOptions: DynamicLinkParametersOptions(
shortDynamicLinkPathLength: ShortDynamicLinkPathLength.unguessable),
androidParameters: AndroidParameters(
packageName: 'com.my_page',
minimumVersion: 0,
),
iosParameters: IosParameters(
bundleId: 'com.my_page',
minimumVersion: '0',
appStoreId: '122343564',
),
socialMetaTagParameters: SocialMetaTagParameters(
title: AppLocalization.of(context).getMessage('join_info_group'),
description: group.title,
imageUrl: Uri.parse(group.image)),
);
final link = await parameters.buildUrl();
final ShortDynamicLink shortenedLink =
await DynamicLinkParameters.shortenUrl(
link,
DynamicLinkParametersOptions(
shortDynamicLinkPathLength: ShortDynamicLinkPathLength.unguessable),
);
final Uri dynamicUrl = shortenedLink.shortUrl;
return dynamicUrl;
}
}
只需将值更改为您的项目值和数据即可。
关于android - Firebase动态链接与动态参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67891350/