FCM推送通知FLUTTER应用程序终止时

4
我试图从Firebase控制台接收Android的推送通知,但是当应用程序终止时我什么也没收到(我有onResume、onMessage和onLaunch回调监听器,但我甚至还不想在应用程序中处理它们),我只想让它们显示在托盘或锁定屏幕上。是否需要进行某些Android配置?

1
你可以使用Postman进行测试:查看Test FCM Notification with Postman - Pratik Butani
没有onResume、onLaunch,我认为你正在使用较旧版本的firebase_messaging,请尝试使用最新版本。此外,Firebase建议使用HTTP V1而不是遗留API。https://firebase.google.com/docs/cloud-messaging/migrate-v1 - Jaydeep chatrola
2个回答

6

希望我的第一个答案能让你满意。

正如您可以在这里看到的那样,使用onBackgroundMessage处理通知,即使应用程序被终止也可以。也许你遇到的问题是你发送的是“仅数据”消息而不是通知。在这种情况下,你需要设置字段"priority": "high"

此外,在最新版本的Flutter和firebase_messaging中,onResume、onMessage和onLaunch方法已经过时, 你应该将它们替换为onMessage、onMessageOpened、onBackground这些方法,但你可以在官方文档中找到更多信息。


谢谢。我总是忘记这个。 - gowtham6672

0

只是对@samUser1答案的补充。 当应用程序被终止时,此代码将处理事件。

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);

并在主函数之外对其进行解析。以下示例使用AwesomeNotifications包。 https://github.com/rafaelsetragni/awesome_notifications/blob/master/example/lib/main.dart

Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  await Firebase.initializeApp();

  final res = await AwesomeNotifications().createNotification(
    content: NotificationContent(
      id: Random().nextInt(1000000),
      channelKey: 'channel_name',
      title: 'Hello!',
      body: 'World!',
      notificationLayout: NotificationLayout.Default,
    ),
  );
} 

使用这个配置,当应用程序在被杀死的模式下收到任何数据通知时,整个主函数都会运行。这会导致一些副作用,因为 runApp 正在运行。有没有办法只运行高级别函数? - raphire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接