Flutter FCM onBackgroundMessage 处理程序给出空检查错误

Posted

技术标签:

【中文标题】Flutter FCM onBackgroundMessage 处理程序给出空检查错误【英文标题】:Flutter FCM onBackgroundMessage handler gives null check error 【发布时间】:2021-08-03 17:53:15 【问题描述】:

我正在尝试为我的应用实现通知,但是在初始化通知时 FirebaseMessaging.onBackgroundMessage(notificationHandler)gives 错误

错误:

E/flutter (28265): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] 未处理异常:空值检查运算符用于空值 E/flutter (28265): #0 MethodChannelFirebaseMessaging.registerBackgroundMessageHandler (package:firebase_messaging_platform_interface/src/method_channel/method_channel_messaging.dart:173:53) E/flutter (28265): #1 FirebaseMessagingPlatform.onBackgroundMessage= (package:firebase_messaging_platform_interface/src/platform_interface/platform_interface_messaging.dart:108:16) E/flutter (28265): #2 FirebaseMessaging.onBackgroundMessage (package:firebase_messaging/src/messaging.dart:100:31)

通知处理程序:

Future<void> notificationHandler(RemoteMessage message) async 
    /// do sth with data

注意:FirebaseMessaging.onMessageFirebaseMessaging.onMessageOpenedApp 可以正常工作

【问题讨论】:

在主函数上初始化ònBackgroundMessage`解决了这个问题 【参考方案1】:

您似乎将FirebaseMessaging.onBackgroundMessage(notificationHandler)notificationHandler 函数放在一个类中。然而,这与 FlutterFire here 的官方文档相矛盾。您需要满足以下条件才能使此功能正常工作:

    不能是匿名函数。 它必须是***函数(例如,不是需要初始化的类方法)。

我对您的建议是,尝试将您正在使用的函数 notificationHandler 作为参数您正在调用 FirebaseMessaging.onBackgroundMessage() 的类之外。它对我有用。

【讨论】:

以上是关于Flutter FCM onBackgroundMessage 处理程序给出空检查错误的主要内容,如果未能解决你的问题,请参考以下文章

Flutter / FCM 通知未到达 Codemagic iOS 版本

Flutter FCM iOS 问题 - 在检索 FCM 令牌之前未设置 APNS 设备令牌

Flutter中FCM的自定义通知通道

Flutter:如何使用 fcm 以编程方式发送推送通知

如何使用 FCM 和 Flutter(一个到另一个设备)发送推送通知?

Flutter 按主题使用 FCM 推送通知