Не удается получать фоновые уведомления в Android с помощью flutter

# #android #firebase #flutter #push-notification #firebase-cloud-messaging

Вопрос:

Я использую FCM для отправки уведомлений с помощью flutter , уведомления на переднем плане работают хорошо, но в фоновом режиме он не получает никаких уведомлений .

вот мой код

 class Home extends StatefulWidget {
 

@переопределение
_HomeState createState() => _HomeState();
}

 class _HomeState extends State<Home> {
  String token = '';
  final FirebaseMessaging firebaseMessaging = FirebaseMessaging.instance;

  @override
  void initState() {
    getToken();

    firebaseMessaging.requestPermission(
        alert: true, badge: true, provisional: true, sound: true);

    FirebaseMessaging.onMessage.listen((RemoteMessage message) {
      print("onMessage: $message");
    });


    FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
      print("onMessageOpenedApp: $message");
    });


    super.initState();
  }

  void getToken() async {
    token = (await firebaseMessaging.getToken())!;
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(child: Text("Token : $token")),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          print(token);
        },
        child: Icon(Icons.print),
      ),
    );
  }
}
 

Комментарии:

1. Код не отображается в вашем сообщении. Разрешены ли разрешения на уведомления?

2. теперь это показано @HuthaifaMuayyad

Ответ №1:

Вам необходимо определить именованный обработчик верхнего уровня, так как последний firebase_messaging 10.0.6. Уведомления будут работать в фоновом режиме, сначала обновите firebase_messaging 10.0.6

/// Определите именованный обработчик верхнего уровня, который будет/ / / вызывать фоновые/ завершенные сообщения. /// /// Чтобы убедиться, что все работает, ознакомьтесь с журналами собственной платформы.

 Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  // If you're going to use other Firebase services in the background, such as Firestore,
  // make sure you call `initializeApp` before using other Firebase services.
  await Firebase.initializeApp();
  print('Handling a background message ${message.messageId}');
}
 

смотрите здесь полный пример: firebase_messaging/пример

если вам нужен реальный пример проекта, заполните пример

Комментарии:

1. К сожалению, я добавил его, и он не работает

2. Вы делаете что-то неправильно, я это реализую, и это работает для меня, обратите внимание, это работает только на стоковой версии Android, это не будет работать на устройствах Xiaomi, например, вот полный пример github.com/FirebaseExtended/flutterfire/tree/master/packages/…