当 flutter 应用程序处于后台时,通知不会在发布模式下发出

Vru*_*tel 5 background-service firebase flutter google-cloud-firestore

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await GetStorage.init();
  await Firebase.initializeApp();
  await PushNotificationsService().init();
  FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
  runApp(MyApp());
  setuplocator();
}
Run Code Online (Sandbox Code Playgroud)

上面的代码是在主线程上设置的。现在的问题是应用程序在后台时没有收到通知。在前台它工作正常。但它在后台不起作用。

但这一切都是在调试模式下发生的,而不是在发布模式下发生的。该怎么办 ?

Vru*_*tel 23

@pragma('vm:entry-point')
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
// handle message
}
Run Code Online (Sandbox Code Playgroud)

只需在上面的 _firebaseMessagingBackgroundHandler 方法上添加 @pragma('vm:entry-point')

我必须再次指出,此问题仅发生在发布版本上并且仅发生在 Android 平台上(我已在 Android 13 的模拟器以及运行 Android 12 的三星设备中对此进行了测试)。在调试和配置文件模式下,应用程序收到 2 个通知,一个来自本机 Firebase Messaging,一个来自 Flutter 后台处理程序的 firebase_local_notifications,并且它也应该在发布模式下执行此操作(这在 3.0.5 中可以正常工作),但是,在 3.3.0 中,它显示的只是本机通知,没有任何 flutter_local_notifications 生成的痕迹。