# #android #firebase #flutter #dart #firebase-dynamic-links
Вопрос:
Я пытаюсь добавить динамический параметр в свою динамическую ссылку. Например, если у меня есть ссылка, https://xyz.page.link/promo?id=1
добавленная в консоль firebase. Я хочу, чтобы id=1 был динамическим, т. Е. используя одну и ту же ссылку, я мог бы передать это для разных идентификаторов, а не создавать ссылки для каждого идентификатора и каждый раз проверять код для перенаправления на экран Flutter из getRoute (), упомянутого ниже.
Может ли кто-нибудь предложить какой-нибудь способ добиться этого?
// 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();
}
}
Спасибо
Аджинкья Таранекар
Ответ №1:
Я могу поделиться с вами кодом, который я использую для создания динамических ссылок с параметром:
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;
}
}
Просто измените значения на значения и данные вашего проекта.
Комментарии:
1. Круто, что это работает, спасибо! Есть ли у вас какой-либо способ сделать то же самое в консоли firebase?
2. Что вы имеете в виду под консолью firebase? Прекратить это вручную?
3. Да, я искал, можем ли мы сделать это тоже с консоли firebase или нет.