E/flutter (26872): [错误:flutter/lib/ui/ui_dart_state.cc(199)]
未处理的异常:对空值使用空检查运算符
E/颤振(26872):#0
MethodChannelFirebaseMessaging.registerBackgroundMessageHandler
(包:firebase_messaging_platform_interface/src/method_channel/method_channel_messaging.dart:173:53)
E/颤振 (26872):#1
FirebaseMessagingPlatform.onBackgroundMessage=
(包:firebase_messaging_platform_interface/src/platform_interface/platform_interface_messaging.dart:108:16)
// Background Messaging Set Up
Future<void> _firebaseMessagingBackgroundHandler(
RemoteMessage message) async {
print('background message');
}
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
runApp(....)
我在 Android 系统上收到此代码的错误。一切正常,除非应用程序终止。
什么适用于 Android:
什么在 Android 上不起作用:
适用于 iOS 的内容:
什么在 iOS 上不起作用:
我不知道为什么在 Android 系统上出现空值错误,我该如何解决这个问题?另外,当应用终止时,我在 iOS 上无法收到 Data only
推送通知是真的吗?
答案 0 :(得分:3)
我和你在同一条线上遇到了同样的错误。我查看了 docs,它说明了关于后台消息处理程序的两件事。
就我而言,它不是顶级函数,它是在类中声明的。当您将处理程序移出任何类或函数时,使其成为顶级函数并且不需要任何类或方法初始化,那么错误就会消失。
答案 1 :(得分:2)
_firebaseMessagingBackgroundHandler 函数应该在主函数之外。
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
await Firebase.initializeApp();
}
Future<void> main() async {
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
runApp(
...
);
}