chi*_*chi 8 push-notification flutter firebase-cloud-messaging
E/flutter (26872): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] 未处理的异常:空值上使用的空检查运算符 E/flutter (26872): #0
MethodChannelFirebaseMessaging.registerBackgroundMessageHandler (package:firebase_messaging_platform_interface /src/method_channel/method_channel_messaging.dart:173:53) E/flutter (26872): #1
FirebaseMessagingPlatform.onBackgroundMessage= (package: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(....)
Run Code Online (Sandbox Code Playgroud)
我在 Android 系统上收到此代码的错误。除非应用程序终止,否则一切正常。
什么适用于Android:
什么在 Android 上不起作用:
什么在 iOS 上有效:
什么在 iOS 上不起作用:
我不知道为什么我在 Android 系统上收到空值错误,我该如何解决这个问题?另外,Data only当应用程序终止时,我无法在 iOS 上接收推送通知是真的吗?
Raf*_*zan 22
_firebaseMessagingBackgroundHandler 函数应该位于主函数之外。
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
await Firebase.initializeApp();
}
Future<void> main() async {
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
runApp(
...
);
}
Run Code Online (Sandbox Code Playgroud)
就我而言,按照文档所说的去做是不够的。所以我意识到我应该WidgetsFlutterBinding.ensureInitialized()在 main 函数的所有内容之前添加如下内容:
void main() {
WidgetsFlutterBinding.ensureInitialized();
FirebaseMessaging.onBackgroundMessage(_handleMessage);
runApp(const Homino());
}
Run Code Online (Sandbox Code Playgroud)
我和你在同一条线上有同样的错误。我查看了文档,它说明了关于后台消息处理程序的两件事。
就我而言,它不是顶级函数,而是在类中声明的。当您将处理程序移出任何类或函数时,使其成为顶级函数并且不需要任何类或方法初始化,那么错误就会消失。
| 归档时间: |
|
| 查看次数: |
2297 次 |
| 最近记录: |