微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当应用程序在后台 FCM 中时颤动显示对话框或页面

如何解决当应用程序在后台 FCM 中时颤动显示对话框或页面

我已经实现了一个函数来处理从 FCM 在后台接收到的消息。 现在我需要在应用程序处于后台时向用户显示一些内容

我已经导入 得到它 可注射的 堆叠服务

并尝试创建一个无需传递上下文即可显示自定义对话框。应用打开时完成,但应用在后台时什么也不做。

在主 Showdialog 中初始化:

  await setupLocator();
  setupDialogUi();
  PushNotificationsManager().init();

还有一个静态的 dialogService:

variables.dialogService = locator<DialogService>();

navigatorkey 设置为

 navigatorKey: StackedService.navigatorKey,

然后,在 FCM pushnotificationmanager 中,我有

Future<dynamic> myBackgroundMessageHandler(Map<String,dynamic> message) async {

  print('on background $message');

  variables.dialogService.showCustomDialog(
    variant: DialogType.basic,title: 'This is a custom UI with Text as main button',description: 'Sheck out the builder in the dialog_ui_register.dart file',mainButtonTitle: 'Ok',);

}
class PushNotificationsManager {

  PushNotificationsManager._();

  factory PushNotificationsManager() => _instance;

  static final PushNotificationsManager _instance = PushNotificationsManager._();

  final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
  bool _initialized = false;



  Future<void> init() async {
    if (!_initialized) {
      // For iOS request permission first.
      _firebaseMessaging.requestNotificationPermissions();
      _firebaseMessaging.configure(
        onMessage: (Map<String,dynamic> message) async {
          // showNotificationWithoutSound();
          print('firebase ########test ########## on message $message');

          variables.dialogService.showCustomDialog(
            variant: DialogType.basic,);
          // }
        },onBackgroundMessage: myBackgroundMessageHandler,onResume: (Map<String,dynamic> message) async {
          print('firebase ########test ########## on resume $message');
        },onLaunch: (Map<String,dynamic> message) async {
          print('firebase ########test ########## on launch $message');
        },);

      // For testing purposes print the Firebase Messaging token
      String token = await _firebaseMessaging.getToken();
      print("FirebaseMessaging token: $token");

      _initialized = true;
    }
  }
}

onMessage 正确显示对话框,但 myBackgroundMessageHandler 抛出错误

NoSuchMethodError: 方法 'showCustomDialog' 在 null 上被调用

有什么建议可以在应用程序处于后台显示对话框或小部件或其他内容吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。