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

锁定屏幕颤振的FCM通知

陶成济
2023-03-14

我在开发一个应用程序,我不能收到通知时,电话锁定的FCM。

_fcm.configure(
  onMessage: (Map<String, dynamic> message) async {
    print("onMessage: $message");
    AwesomeNotifications().createNotification(
        content: NotificationContent(
            id: 100,
            channelKey: "basic_channel",
            title: message['notification']['title'],
            body: message['notification']['body'],
            showWhen: true,
            autoCancel: true));
  },
  onLaunch: (Map<String, dynamic> message) async {
    print("onLaunch: $message");
  },
  onResume: (Map<String, dynamic> message) async {
    print("onResume: $message");
  },
);

我使用了firebase和Awesome通知插件来显示通知。

有人能帮帮我吗,我困在这里谢谢

共有1个答案

越麒
2023-03-14

我可以给你推荐的是改变函数,你可以实现如下所示:

void subscribeChannel(String data) async =>
    await FirebaseMessaging.instance.subscribeToTopic(data);

void unsubscribeChannel(String channelId) async =>
    await FirebaseMessaging.instance.unsubscribeFromTopic(channelId);

void listenNotificationEvents() {
  FirebaseMessaging.instance.getInitialMessage().then(
    (value) async {
      if (value != null) setLocalNotification(value);
    },
  );
  FirebaseMessaging.onMessage.listen((event) {
    if (event.data.isNotEmpty) setLocalNotification(event);
  });
  FirebaseMessaging.onMessageOpenedApp.listen((event) {
    if (event.data.isNotEmpty) changeScreen(event.data);
  });
}

这些功能基本上是让firebase设置所有功能,并允许在应用程序被杀死或处于后台时也接收通知。

在MaterialApp类中,您需要使用这个。

FirebaseMessaging.onBackgroundMessage(firebaseMessagingBackgroundHandler);
try {
  FirebaseMessaging.onBackgroundMessage(
      (message) => onBackgroundMessage(message.data));
} catch (_) {}

最后,如果你收到一个通知,并且应用程序是打开的,firebase将执行块代码中的所有内容,所以最后的改变是在onMessage中设置本地通知的设置。

如果这对你有帮助,请告诉我。

 类似资料:
  • 我正在编写一个应用程序来管理或自定义Android设备的解锁屏幕。它的工作原理如下: 用户使用电源按钮锁定屏幕。 用户尝试解锁屏幕,从而再次按下电源按钮 我的活动弹出--屏幕仍然锁定 用户回答问题,如果答案正确,屏幕解锁 我已经为第三步创建了一个活动,并将以下代码添加到其方法中: 这工作正常,完全符合我的期望。我的问题是第四步。我已经搜索并找到了许多解决方案,但没有一个适合我。 如何以编程方式锁定

  • 我试图使一个登录屏幕类似于锁定屏幕与4 TextField。我面临的问题是如何将焦点从一个文本字段切换到下一个文本字段。 当我说时,firstTextField的值被复制到secondTextField 我使用的是十进制键盘类型 } 我如何才能正确地做到这一点,任何帮助和建议请。

  • 我使用firebase_消息和Flatter_local_通知包,目前我可以在应用程序处于后台时,在用户点击通知时获取通知数据。当应用程序位于前台时,我如何收听点击事件。

  • 我正在使用firebase云功能向特定用户发送通知。这是我从函数发送的有效负载。 我正在使用firebase_messaging(flutter package:https://pub.dartlang.org/packages/firebase_messaging)接收通知,并且我已经编写了onMessage、onLaunch和onResume方法的代码。 因此,当我使用Admin SDK发送消

  • 我使用pushNamed()从屏幕中获取返回数据,如下所示: 但代码有问题,这是完整的错误堆栈跟踪: 但以下代码正常工作:

  • 如何在Flutter中完成所有活动/屏幕。 我想要它为Android和iOS。 有没有办法像我们在Android中的finishafinity()一样。 例子: