具有动态参数的 Firebase 动态 link?

Firebase dynamic link with dynamic parameters?

我正在尝试将动态参数添加到我的动态 link。 例如,如果我将 link 作为 https://xyz.page.link/promo?id=1 添加到 firebase 控制台。我希望 id=1 应该是动态的,即使用相同的 link 我可以为不同的 id 传递它,而不是为每个 id 创建 links 并每次检查代码以重定向到 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();
  }
}

谢谢

Ajinkya Taranekar

我可以与您分享我用来创建带有参数的动态链接的代码:



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;
  }
}

只需将值更改为您的项目值和数据。