# #flutter #dart #firebase-cloud-messaging #flutter-notification
Вопрос:
Я хочу отображать push-уведомление, когда мое приложение находится в фоновом режиме.
Я использую пакет flutter_local_notifications и пакет firebase_messaging.
// The following handler is called, when App is in the background.
FirebaseMessaging.onBackgroundMessage(firebaseMessagingBackgroundHandler);
не вызывается, если RemoteNotification
объект передается через RemoteMessage
:
Future<void> firebaseMessagingBackgroundHandler(RemoteMessage message) async {
print('message from background handler');
print("Handling a background message: ${message.messageId}");
// If this is null, then this handler method is called
RemoteNotification remoteNotification = message.notification;
showNotificationFromData(message.data);
}
Поэтому я должен передать message.data
объект, который является a Map<String, dynamic>
.
Моя проблема в том, что я больше не получаю push-уведомления при вызове этого firebaseMessagingBackgroundHandler
метода обработчика.
Поэтому я пытался использовать flutter_local_notification
пакет для отображения push-уведомления, но, как говорится, он «локальный», поэтому он отлично работает на переднем плане, но, по-видимому, не в фоновом режиме (тот же код с теми же данными не отображается в фоновом режиме в качестве push-уведомления).
Вопрос :
Мне нужно вызвать firebaseMessagingBackgroundHandler
обработчик для обработки событий в моем приложении. Так что я могу сделать, чтобы по-прежнему получать push-уведомления, когда мое приложение находится в фоновом режиме, пожалуйста ?
Спасибо
Ответ №1:
Хорошо, я нашел решение. Это должно было установить content_available
значение True
в коде на стороне сервера.
Чтобы заменить firebase_messaging.Notification
элемент, нам нужно переопределить android
apns
настройки и.
Это выглядит так в python :
apnsConfig = messaging.APNSConfig(
payload=messaging.APNSPayload(
aps=messaging.Aps(
content_available=True,
)
),
)
Сейчас я получаю push-уведомления и вызываю фоновый обработчик внутри кода dart.