Настройка (проверено при отладке)
main_bootstrap.dart:
Код: Выделить всё
dart
await Firebase.initializeApp(options: firebaseOptions);
FirebaseMessaging.onBackgroundMessage(firebaseMessagingBackgroundHandler); // Top-level handler with @pragma('vm:entry-point')
runApp(ProviderScope(child: MainApp()));
Полезная нагрузка FCM (только данные, без звука):
Код: Выделить всё
json
{
"tokens": ["device_token"],
"data": {
"roomId": "123",
"roomType": "group",
"senderName": "Ahmed",
"preview": "Hello there",
"timestamp": "1735400000000"
},
"apns": {
"payload": { "aps": { "content-available": 1 } },
"headers": { "apns-push-type": "background", "apns-priority": "5" }
}
}
Код: Выделить всё
dart
@pragma('vm:entry-point')
Future firebaseMessagingBackgroundHandler(RemoteMessage message) async {
await Firebase.initializeApp();
print('🔥 BACKGROUND: ${message.messageId}'); // Never appears in Xcode logs
}
Это ограничение, специфичное для версии iOS, при котором тихие push-уведомления регулируются/отключаются более агрессивно, чем отладка, даже при правильном контенте-доступном:1 + apns-push-type:background?
Проблема с версией firebase_messaging? Использование последней версии firebase_messaging: ^15.0.0 – есть ли известные ошибки сборки выпуска?
Какие настройки сборки Xcode отличаются в отладочной/выпускной версии, которые могут блокировать вызов фонового обработчика?
Обходной путь для приложений чата? Должен ли я отправлять двойные полезные нагрузки (без звука для фонового обработчика + видимое уведомление в качестве резервного варианта) или существует надежный шаблон выпуска?
Подробнее здесь: https://stackoverflow.com/questions/798 ... lease-mode
Мобильная версия