Flutter-如何在Firebase动态链接中为应用程序邀请功能传递自定义参数?

马赫什

您能告诉我如何使用flutter插件firebase_dynamic_links [ https://pub.dev/packages/firebase_dynamic_links#-readme-tab-]发送和获取参数吗?

我想在Deeplink /动态链接中传递诸如用户名和密码之类的参数,如下所示:

uriPrefix: 'https://test.page.link/appinvite?username=Test&password=123456',
link: Uri.parse('https://test.page.link/appinvite?username=Test&password=123456'),

这是传递数据的正确方法吗?

之后,我使用下面的代码来获取数据,

await FirebaseDynamicLinks.instance.getInitialLink();
final Uri deepLink = data?.link;

但是,它为我提供了我在firebase控制台中添加的虚拟Web URL,用于Deep Link URL中的firebase动态链接

目前,我能够从Firebase动态链接打开应用程序,但无法获取自定义参数。

任何帮助将不胜感激。

更新的代码:

发送邀请:

_generateAndShareDynamicLink() async {
    final DynamicLinkParameters parameters = DynamicLinkParameters(
      uriPrefix: 'https://test.page.link/groupinvite',
      link: Uri.parse('https://test.page.link/groupinvite'),
      androidParameters: AndroidParameters(
        packageName: 'com.test.flutter_authentication',
        minimumVersion: 0,
      ),
      dynamicLinkParametersOptions: DynamicLinkParametersOptions(
        shortDynamicLinkPathLength: ShortDynamicLinkPathLength.unguessable,
      ),
    );

    Uri url = await parameters.buildUrl();

    shareURL(Uri.https(url.authority, url.path, {"username": "Test"}));
}

为了在initState()中获取数据:

FirebaseDynamicLinks.instance.onLink(
        onSuccess: (PendingDynamicLinkData dynamicLink) async {
          final Uri deepLink = dynamicLink?.link;
          _scaffoldKey.currentState.showSnackBar(SnackBar(content: Text("deepLink2 : ${deepLink}",)));
          if (deepLink != null) {
            Map sharedListId = deepLink.queryParameters;
            print("sharedListId : ${sharedListId}");

            String username=sharedListId["username"];
            print("username : ${username}");

            Navigator.pushNamed(context, deepLink.path);
          }
        }, onError: (OnLinkErrorException e) async {
      print('onLinkError');
      print(e.message);
    });

仍检索到的数据为空。

有人可以帮忙吗?

杰伊·蒙加拉(Jay Mungara)

使用动态链接的最佳方法是

import 'package:firebase_dynamic_links/firebase_dynamic_links.dart';
import 'package:flutter/material.dart';

class TestPage extends StatefulWidget {
  @override
  _TestPageState createState() => _TestPageState();
}

class _TestPageState extends State<TestPage> {

  @override
  void initState() {
    super.initState();
    fetchLinkData();
  }

  void fetchLinkData() async {
    // FirebaseDynamicLinks.getInitialLInk does a call to firebase to get us the real link because we have shortened it.
    var link = await FirebaseDynamicLinks.instance.getInitialLink();

    // This link may exist if the app was opened fresh so we'll want to handle it the same way onLink will.
    handleLinkData(link);

    // This will handle incoming links if the application is already opened
    FirebaseDynamicLinks.instance.onLink(onSuccess: (PendingDynamicLinkData dynamicLink) async {
      handleLinkData(dynamicLink);
    });
  }

  void handleLinkData(PendingDynamicLinkData data) {
    final Uri uri = data?.link;
    if(uri != null) {
      final queryParams = uri.queryParameters;
      if(queryParams.length > 0) {
        String userName = queryParams["username"];
        // verify the username is parsed correctly
        print("My users username is: $userName");
      }
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Sample"),
      ),
      body: Center(
        child: Text("Test"),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () async {
          var dynamicLink = await createDynamicLink(userName: "Test");
          // dynamicLink has been generated. share it with others to use it accordingly.
          print("Dynamic Link: $dynamicLink");
        },
        child: Icon(
          Icons.add,
          color: Colors.white,
        ),
      ),
    );
  }

  Future<Uri> createDynamicLink({@required String userName}) async {
    final DynamicLinkParameters parameters = DynamicLinkParameters(
      // This should match firebase but without the username query param
      uriPrefix: 'https://test.page.link',
      // This can be whatever you want for the uri, https://yourapp.com/groupinvite?username=$userName
      link: Uri.parse('https://test.page.link/groupinvite?username=$userName'),
      androidParameters: AndroidParameters(
        packageName: 'com.test.demo',
        minimumVersion: 1,
      ),
      iosParameters: IosParameters(
        bundleId: 'com.test.demo',
        minimumVersion: '1',
        appStoreId: '',
      ),
    );
    final link = await parameters.buildUrl();
    final ShortDynamicLink shortenedLink = await DynamicLinkParameters.shortenUrl(
      link,
      DynamicLinkParametersOptions(shortDynamicLinkPathLength: ShortDynamicLinkPathLength.unguessable),
    );
    return shortenedLink.shortUrl;
  }
}

你完成了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Flutter中将自定义小部件项目填充到ListView中?

来自分类Dev

Flutter自定义字体未应用

来自分类Dev

如何使用FlutterFragment和自定义入口点将Flutter布局嵌入Android应用程序中?

来自分类Dev

如何在Flutter中针对不同屏幕尺寸在自定义类中设置应用栏的高度?

来自分类Dev

如何在flutter应用程序的PopupMenuItem的开头添加图标

来自分类Dev

Flutter Web:如何在Flutter Web应用程序中禁用浏览器的向后按钮

来自分类Dev

如何在Flutter中实现自定义应用栏布局可滚动效果

来自分类Dev

如何在Flutter上禁用或处理最小化应用程序功能

来自分类Dev

Flutter中的自定义按钮

来自分类Dev

如何在Flutter Web中动态更改应用程序标题?

来自分类Dev

Flutter如何绘制自定义渐变

来自分类Dev

如何在Flutter中创建自定义日历

来自分类Dev

如何在Flutter Android App中为Firebse TestLab添加凭据以自定义登录

来自分类Dev

如何在Flutter Android中将自定义视图设置为实际启动屏幕

来自分类Dev

如何在Flutter中创建自定义列表?

来自分类Dev

Flutter中的自定义BottomNavigationBar

来自分类Dev

如何在Flutter应用程序中叠加元素?

来自分类Dev

如何在Flutter中设置自定义FontWeight值

来自分类Dev

如何在Android的build.gradle文件中为flutter应用程序定义基本URL?

来自分类Dev

如何在Flutter中制作自定义按钮形状

来自分类Dev

在Flutter中自定义DateRangePicker

来自分类Dev

如何在Flutter中实现自定义窗口?

来自分类Dev

Firebase注销在Flutter应用程序中不起作用

来自分类Dev

如何在flutter应用程序中为Firestore配置多个条件查询

来自分类Dev

Flutter 自定义滚动与动态列表

来自分类Dev

如何在 Flutter 中自定义 Slider 小部件?

来自分类Dev

如何在 Flutter 中设置 Firebase Analytics 自定义事件而不在每个屏幕中传递“分析/观察者”对象

来自分类Dev

如何使用 flutter 和 firebase 将“阅读”功能添加到消息传递应用程序中

来自分类Dev

如何在 Flutter 中为自定义画家的颜色设置动画?

Related 相关文章

  1. 1

    如何在Flutter中将自定义小部件项目填充到ListView中?

  2. 2

    Flutter自定义字体未应用

  3. 3

    如何使用FlutterFragment和自定义入口点将Flutter布局嵌入Android应用程序中?

  4. 4

    如何在Flutter中针对不同屏幕尺寸在自定义类中设置应用栏的高度?

  5. 5

    如何在flutter应用程序的PopupMenuItem的开头添加图标

  6. 6

    Flutter Web:如何在Flutter Web应用程序中禁用浏览器的向后按钮

  7. 7

    如何在Flutter中实现自定义应用栏布局可滚动效果

  8. 8

    如何在Flutter上禁用或处理最小化应用程序功能

  9. 9

    Flutter中的自定义按钮

  10. 10

    如何在Flutter Web中动态更改应用程序标题?

  11. 11

    Flutter如何绘制自定义渐变

  12. 12

    如何在Flutter中创建自定义日历

  13. 13

    如何在Flutter Android App中为Firebse TestLab添加凭据以自定义登录

  14. 14

    如何在Flutter Android中将自定义视图设置为实际启动屏幕

  15. 15

    如何在Flutter中创建自定义列表?

  16. 16

    Flutter中的自定义BottomNavigationBar

  17. 17

    如何在Flutter应用程序中叠加元素?

  18. 18

    如何在Flutter中设置自定义FontWeight值

  19. 19

    如何在Android的build.gradle文件中为flutter应用程序定义基本URL?

  20. 20

    如何在Flutter中制作自定义按钮形状

  21. 21

    在Flutter中自定义DateRangePicker

  22. 22

    如何在Flutter中实现自定义窗口?

  23. 23

    Firebase注销在Flutter应用程序中不起作用

  24. 24

    如何在flutter应用程序中为Firestore配置多个条件查询

  25. 25

    Flutter 自定义滚动与动态列表

  26. 26

    如何在 Flutter 中自定义 Slider 小部件?

  27. 27

    如何在 Flutter 中设置 Firebase Analytics 自定义事件而不在每个屏幕中传递“分析/观察者”对象

  28. 28

    如何使用 flutter 和 firebase 将“阅读”功能添加到消息传递应用程序中

  29. 29

    如何在 Flutter 中为自定义画家的颜色设置动画?

热门标签

归档