android - Firebase动态链接与动态参数?

标签 android firebase flutter dart firebase-dynamic-links

我正在尝试向动态链接添加动态参数。 例如,如果我将 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/

相关文章:

android - Robolectric 测试 Activity 创建,包括 Intent 附加功能

java - Android更改 Material 高程阴影颜色

typescript - 如何在 try-catch block 中输入 Firebase JS SDK 错误?

flutter - 如何使用Flutter dart中的共享首选项保存和读取类对象的列表?

android - 在自定义 View 中覆盖空方法并在 MainActivity 中处理它

android - 在 XDK 的中心放置一行

ios - 嵌套请求的完成 block

javascript - Firebase JavaScript : Securely store a password inside the database

json - 未处理的异常:类型 '_InternalLinkedHashMap<String, dynamic>'不是类型转换中类型 'List<dynamic>'的子类型吗?

Flutter 聊天文本像 Whatsapp 或 Telegram 一样对齐