gpt4 book ai didi

android - flutter 应用在​​后台时调用 onMessage 方法

转载 作者:IT王子 更新时间:2023-10-29 06:37:17 25 4
gpt4 key购买 nike

我是 flutter 和 dart 的新手。我正在尝试将我的应用程序与 FCM 连接起来.当应用程序处于前台时,我创建了 flutterLocalNotificationsPlugin 并且一切正常,但是当我的应用程序处于后台时,我不知道如何处理 onMessage 方法。有人知道我该如何解决吗?

FirebaseMessaging firebaseMessaging = new FirebaseMessaging();
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin();

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

var androidInitSettings = new AndroidInitializationSettings('mipmap/ic_launcher');
var iosInitSettings = new IOSInitializationSettings();
var initSettings = new InitializationSettings(androidInitSettings, iosInitSettings);
flutterLocalNotificationsPlugin.initialize(initSettings, selectNotification: onSelectNotification);

firebaseMessaging.configure(
onLaunch: (Map<String, dynamic> msg) {
print(" onLaunch called ${(msg)}");
},
onResume: (Map<String, dynamic> msg) {
print(" onResume called ${(msg)}");
},
onMessage: (Map<String, dynamic> msg) {
showNotification(msg);
print(" onMessage called ${(msg)}");
},
);
firebaseMessaging.requestNotificationPermissions(const IosNotificationSettings(sound: true, alert: true, badge: true));
firebaseMessaging.onIosSettingsRegistered.listen((IosNotificationSettings setting) {
print('IOS Setting Registed');
});
firebaseMessaging.getToken().then((token) {
update(token);
});
}

最佳答案

我看到你在 onMessage 被触发时强制显示通知,如果应用程序在后台,你不需要这样做,通知将自动创建。

onMessage 在您收到通知并且应用程序打开并在前台运行时触发。例如,您打开了 Gmail 应用程序,并收到了一封新电子邮件,在这种情况下,您不需要在通知区域弹出通知。应用程序可能会选择直接处理它,并且在收到通知后立即触发 onMessage - 这很好,因此您无需继续连接服务器。

onResumeonLaunch 有点不同 - 这两个事件不会在收到通知时触发。它们仅在用户从通知区域选择/点击通知时触发。因此,在这两种情况下,应用程序当前处于隐藏状态,要么根本不运行(终止),要么应用程序处于后台 - 未显示。在这种情况下,通知会在手机中收到并自动放置在通知区域中(您不需要为此编写“showNotification”代码)。在此状态下,用户可以看到通知,但应用本身还不知道。

只有当用户选择这些通知之一时,该应用才会意识到该通知。

如果应用根本没有运行,onLaunch 将在用户点击通知时触发。这意味着该应用程序未运行,并且由于收到通知,它必须“从头开始启动”。

如果应用程序在后台,当用户选择通知时将触发onResume,将应用程序恢复到前台状态。

编辑:

正如@boformer 所指出的,这仅适用于“通知”消息。如果您发送“数据”消息,则不会创建任何通知,并且消息仅通过 onMessage 传递。更多详细信息,请参阅 the plugin readmefirebase docs .

关于android - flutter 应用在​​后台时调用 onMessage 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52115255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com