当前位置: 首页 > 知识库问答 >
问题:

Firebase云消息传递onLaunch回调

令狐凌
2023-03-14

我的应用程序结构有点乱,但我必须先添加这个补丁,然后我会重新构建整个逻辑。问题是我首先检查是否有Firebase用户,然后如果有,我使用StreamBuilder从FiRecovery获取当前用户配置文件,然后我有_firebaseMessaging.configure方法,因为onLaunch和onResume我使用这个回调:

void _navigateToGestorResevas(Map<String, dynamic> message, User currentUser) {

    Navigator.push(context,
        MaterialPageRoute(builder: (context) =>
            GestorScreen(user: currentUser)));
  }

因为我需要将用户发送到这个屏幕,在那里他从Firebase获取消息。onResume这很好,但是onLaunch它会转到屏幕并获取数据,但是有20秒的时间出现了某种故障。它在我有和没有快照数据的两种状态之间切换了20-30次,_initStatefunc:

final snapshot = await _dbRef.child('mensajes').child(widget.user.id).once();
    if (snapshot.value != null) {
      setState(() {
        hayMensajes = true;
      });
      final data = snapshot.value;
      for (var entry in data.entries) {
        Message message = Message.fromJson(entry.value);
        setState(() {
          message.add(message);
        });
      }
    } else {
      setState(() {
        hayMensajes = false;
      });
    }

有人知道我做错了什么吗?

共有1个答案

经骁
2023-03-14

如果我没有弄错的话,FCMonLaunch带有flutter的回调存在一些活动问题。其中一些仍然没有修复。大多数人不得不面对的问题之一是onLaunch回调被多次调用。我不知道为什么会发生这种情况,但就像您的情况一样,您可以通过一些临时修复来解决这个问题。

如果同一屏幕被一遍又一遍地推送并出现故障,您可以弹出堆栈,直到它到达您要打开的堆栈,并设置一个条件以推送导航器,仅当新路由与旧路由不同时。使用命名路由,

Navigator.popUntil(context, ModalRoute.withName(routeName));

if (ModalRoute.of(context).settings.name != routeName) {
      Navigator.pushNamed(context, routeName);
}

我不确定这是不是你问的问题,但我希望至少我的回答有所帮助。

 类似资料:
  • 我必须在SpringJava中为多层架构制作一个RESTAPI,其中需要为Firebase云消息传递(FCM)构建DAO、控制器和服务管理器,以向android应用程序发送推送通知消息,但我无法在Java中配置服务器以向设备发送通知。我怎么能?

  • FCM服务未向我的iOS应用程序发送消息。 > App CAN成功接收APNs令牌和实例ID令牌 App CAN使用推送通知实用程序利用. p8令牌在后台成功接收来自APN的推送 #2中使用的相同APNs密钥上传到Firebase控制台 应用程序无法接收Firebase控制台中Notification Composer发送的消息,也无法使用CURL请求接收消息。 应用程序在通过FCM发送时不显示任

  • 我正试图将FCM与SNS整合。我在这个答案中读到设置应该与GCM相同。我设法创建了一个FCM应用程序,可以向android设备发送消息。当应用程序在后台时,设备在托盘中接收通知,或当应用程序在前台时打印接收的消息。我正试图整合它现在到SNS,但我似乎不能使它工作,没有任何错误信息。

  • 我试图从C#中的服务器发送推送通知,我使用了正确的注册令牌和API密钥,但仍然得到以下响应。 我按照这个网址来实现这个解决方案通过C#使用FCM(Firebase云消息传递)发送推送到Android 目前,我正在尝试向单个设备发送通知,但也希望同时向多个设备发送通知,我使用了url中给出的,但它不起作用。如果我必须同时向多个设备发送通知,我该怎么办? 这是我的密码

  • 我正在尝试使用FireBase云消息传递。我正在接收令牌,但它没有从控制台收到任何通知。这是我的舱单: 我的代码与示例中的代码几乎相同: 我在这里检查了一个问题,Firebase云消息通知未被设备接收,但仍然无法工作。

  • 我想使用谷歌的Firebase为网络构建一个消息应用程序。在这个应用程序中,用户应该向/从其他用户发送和接收消息。我检查了谷歌的Firebase网站,但我迷路了。你能告诉我从哪里开始吗?你能给我看任何与Firebase网络消息相关的教程或类似的东西吗?我欢迎任何建议。谢谢。