Flutter 后台通知处理程序在多次通知后停止在 iOS 上工作

问题描述 投票:0回答:1

总是收到通知,只是处理程序在一段时间/通知数量后停止工作。

  • 在收到一定数量的通知(大约 9 个)后,后台处理程序将停止被调用。
  • 此问题一直存在,直到未定义的时间段过去并且重新打开应用程序以重新注册处理程序为止。

是否有人有一个稳定的 iOS 上 Flutter 后台通知处理配置,可以持续工作? 任何防止处理程序停止的见解或解决方案将不胜感激。

我正在开发一个 Flutter 应用程序,并配置了一个后台通知处理程序,以便在应用程序处于后台或终止状态时收到通知时执行某些任务。

全新安装后,处理程序可以正常工作(记录测试消息)。然而,在收到更多通知后(限制看起来是随机的,但通常在 9 左右),处理程序将停止被调用,就好像 iOS 已经终止了调用服务一样。为了让它再次工作,我必须等待一段未指定的时间,然后打开应用程序以重新注册处理程序。它会再次工作一段时间,直到停止,如所述。

处理程序被定义为顶级函数,并用 @pragma('vm:entry-point') 进行注释。它是从 main 方法注册的。

@pragma('vm:entry-point')
Future<void> firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
  print('Handling a background message: ${message.messageId}');
}

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
  FirebaseMessaging.onBackgroundMessage(firebaseMessagingBackgroundHandler);
  runApp(MyApp());
}

提前致谢!

flutter firebase firebase-cloud-messaging
1个回答
0
投票

这里:

@pragma('vm:entry-point')
Future<void> firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
  print('Handling a background message: ${message.messageId}');
}

你应该删除这一行:

 await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
© www.soinside.com 2019 - 2024. All rights reserved.