Flutter onBackgroundMessageHandler函数在颤振模式下不工作
我在firebase中部署了一个云函数,每当文档发生更改时就会触发该函数,然后该云函数将向更改文档的用户设备发送通知,这就是有效负载:Flutter onBackgroundMessageHandler函数在颤振模式下不工作,flutter,dart,firebase-cloud-messaging,Flutter,Dart,Firebase Cloud Messaging,我在firebase中部署了一个云函数,每当文档发生更改时就会触发该函数,然后该云函数将向更改文档的用户设备发送通知,这就是有效负载: const payload = (admin.messaging.MessagingPayload = { notification: { title: "NOTIFICATION FROM CLOUD", body: "Sent from triggered cloud function!!", cl
const payload = (admin.messaging.MessagingPayload = {
notification: {
title: "NOTIFICATION FROM CLOUD",
body: "Sent from triggered cloud function!!",
click_action: "FLUTTER_NOTIFICATION_CLICK",
},
data: {
title: "DATA FROM CLOUD",
body: "Sent from triggered cloud function!!",
},
});
如果应用程序处于后台或已终止,则FCM的onBackgroundMessage应触发并运行回调函数。功能如下:
Q.为什么在后台收到通知时此功能甚至没有运行?
这是CustomNotificationHandler.dart类:
class CustomNotificationHandler {
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
Future initializeHandler() async {
var initializationSettingsAndroid = AndroidInitializationSettings(
"app_icon",
);
var initializationSettingsIOS = IOSInitializationSettings(
onDidReceiveLocalNotification: onDidReceiveLocalNotification,
);
var initializationSettings = InitializationSettings(
initializationSettingsAndroid,
initializationSettingsIOS,
);
await flutterLocalNotificationsPlugin.initialize(
initializationSettings,
onSelectNotification: onSelectNotification,
);
}
Future onDidReceiveLocalNotification(
int id, String title, String body, String payload) async {
print("RAN onDidReceiveLocalNotification for IOS");
}
Future onSelectNotification(String payload) async {
if (payload != null) {
debugPrint("Notification payload: $payload");
}
debugPrint("OX: DONE WITH PAYLOAD");
}
}
这是我的应用程序。kt用于注册FirebaseCloudMessaging插件,使其在后台运行
class Application : FlutterApplication(), PluginRegistry.PluginRegistrantCallback {
override fun onCreate() {
super.onCreate()
FlutterFirebaseMessagingService.setPluginRegistrant(this)
}
override fun registerWith(registry: PluginRegistry?) {
FirebaseMessagingPlugin.registerWith(registry?.
registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"))
}
}
这是AndroidManifest.xml中的相关代码块
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="DUE_DATE_REMINDER"
/>
这是当应用程序处于后台时向云函数发送通知时的控制台输出
class Application : FlutterApplication(), PluginRegistry.PluginRegistrantCallback {
override fun onCreate() {
super.onCreate()
FlutterFirebaseMessagingService.setPluginRegistrant(this)
}
override fun registerWith(registry: PluginRegistry?) {
FirebaseMessagingPlugin.registerWith(registry?.
registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"))
}
}
我们做了一些实验:
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="DUE_DATE_REMINDER"
/>