Пожалуйста, ознакомьтесь с новыми находками ниже
Несмотря на то, что я выполнил шаги по настройке в Firebase_messaging документах, я не могу заставить FCM работать должным образом на iOS.
Сообщения DATA работают как положено. Сообщения УВЕДОМЛЕНИЯ не отображаются вообще, независимо от того, находится приложение на переднем плане или в фоновом режиме.
Android уведомления работают, как и предполагалось. Эта проблема возникает только в iOS и только для уведомлений.
Я тестирую на физическом устройстве (iPhone SE) и продолжаю сталкиваться с той же проблемой, даже если приложение развернуто с помощью TestFlight.
void configureFirebase(prefs) async {
try {
await _firebaseMessaging.requestNotificationPermissions();
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
print(message);
onMessage(message);
},
// onBackgroundMessage: myBackgroundMessageHandler,
onLaunch: (Map<String, dynamic> message) async {
print("onLaunch: $message");
onMessage(message);
},
onResume: (Map<String, dynamic> message) async {
print("onResume: $message");
onMessage(message);
},
);
} catch (e) {
print(e);
}
}
Когда приложение скомпилировано, я получаю следующее:
2020-02-09 11:39:34.414043+0100 Runner[236:3651] Configuring the default Firebase app...
2020-02-09 11:39:34.439940+0100 Runner[236:3782] 6.16.0 - [Firebase/Core][I-COR000004] App with name __FIRAPP_DEFAULT does not exist.
2020-02-09 11:39:34.462336+0100 Runner[236:3651] Configured the default Firebase app __FIRAPP_DEFAULT.
2020-02-09 11:39:34.509495+0100 Runner[236:3797] flutter: Observatory listening on http://127.0.0.1:49413/sW_P16TvXjA=/
2020-02-09 11:39:34.530782+0100 Runner[236:3782] 6.16.0 - [Firebase/Messaging][I-FCM001000] FIRMessaging Remote Notifications proxy enabled, will swizzle remote notification receiver handlers. If you'd prefer to manually integrate Firebase Messaging, add "FirebaseAppDelegateProxyEnabled" to your Info.plist, and set it to NO. Follow the instructions at:
https://firebase.google.com/docs/cloud-messaging/ios/client#method_swizzling_in_firebase_messaging
to ensure proper integration.
2020-02-09 11:39:34.535881+0100 Runner[236:3783] 6.16.0 - [Firebase/Analytics][I-ACS023007] Analytics v.60202000 started
2020-02-09 11:39:34.536403+0100 Runner[236:3783] 6.16.0 - [Firebase/Analytics][I-ACS023008] To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see https://help.apple.com/xcode/mac/8.0/#/dev3ec8a1cb4)
2020-02-09 11:39:34.562674+0100 Runner[236:3783] 6.16.0 - [Firebase/Analytics][I-ACS031025] Analytics screen reporting is enabled. Call +[FIRAnalytics setScreenName:setScreenClass:] to set the screen name or override the default screen class name. To disable screen reporting, set the flag FirebaseScreenReportingEnabled to NO (boolean) in the Info.plist
2020-02-09 11:39:34.567991+0100 Runner[236:3782] 6.16.0 - [Firebase/Analytics][I-ACS023012] Analytics collection enabled
Если я отключаю FirebaseAppDelegateProxyEnabled в info.plist, ниже находится стек:
2020-02-09 12:23:03.053017+0100 Runner[290:10393] Configuring the default Firebase app...
2020-02-09 12:23:03.054198+0100 Runner[290:10584] 6.16.0 - [Firebase/Core][I-COR000004] App with name __FIRAPP_DEFAULT does not exist.
2020-02-09 12:23:03.099604+0100 Runner[290:10393] Configured the default Firebase app __FIRAPP_DEFAULT.
2020-02-09 12:23:03.142294+0100 Runner[290:10596] flutter: Observatory listening on http://127.0.0.1:49543/dD-x0XTr2qQ=/
2020-02-09 12:23:03.151748+0100 Runner[290:10583] 6.16.0 - [Firebase/Analytics][I-ACS023007] Analytics v.60202000 started
2020-02-09 12:23:03.152298+0100 Runner[290:10583] 6.16.0 - [Firebase/Analytics][I-ACS023008] To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see https://help.apple.com/xcode/mac/8.0/#/dev3ec8a1cb4)
2020-02-09 12:23:03.153920+0100 Runner[290:10599] 6.16.0 - [Firebase/Analytics][I-ACS025036] App Delegate Proxy is disabled
2020-02-09 12:23:03.166991+0100 Runner[290:10599] 6.16.0 - [Firebase/Analytics][I-ACS031025] Analytics screen reporting is enabled. Call +[FIRAnalytics setScreenName:setScreenClass:] to set the screen name or override the default screen class name. To disable screen reporting, set the flag FirebaseScreenReportingEnabled to NO (boolean) in the Info.plist
2020-02-09 12:23:03.172381+0100 Runner[290:10580] 6.16.0 - [Firebase/Analytics][I-ACS023012] Analytics collection enabled
Есть идеи, что здесь может происходить? Это очень странное поведение, которое я понятия не имею, откуда даже начинать отладку.
Буду очень признателен за любую помощь или указания на возможные решения.
Добавление конфигурации сообщений, используемой в PyFCM на всякий случай это было источником проблемы:
push_service = FCMNotification(api_key=fcmServerKey)
testDATA = {
'title': 'Test title',
'body': 'Test body',
'click_action': 'FLUTTER_NOTIFICATION_CLICK',
'otherFields': 'Other fields here',
}
result = push_service.notify_single_device(
registration_id = token,
message_title='Test title',
message_body='Test body',
data_message = testDATA,
time_to_live=0,
delay_while_idle=False,
extra_notification_kwargs=extraKWARGS,
content_available=True
)
Новые результаты:
УВЕДОМЛЕНИЯ получены в симуляторе iOS. Однако они отображаются только тогда, когда приложение находится на переднем плане. Pu sh уведомления НЕ работают. Тем не менее, я читал, что уведомления pu sh не работают на симуляторе iOS, поэтому может быть поэтому.
Учитывая, что у меня нет видимых ошибок, и я их отлаживал безрезультатно около 30 часов спустя, насколько вероятно, что моя проблема с уведомлениями изолирована от этого одного физического устройства (iPhone SE в моем распоряжении), возможно, из-за того, что FCM считает его автономным или его регистрационный идентификатор недействительным?.
У меня нет других айфонов для тестирования.
Приложение полностью функционально и готово во всех других отношениях ... Должен ли я считать это единичным делом и представить свое приложение?