#flutter #google-cloud-firestore
#flutter #google-cloud-firestore
Вопрос:
Как обрабатывать фоновое уведомление iOS click_action, когда оно равно нулю?
{
"to" : "abcd1234",
"collapse_key" : "type_a",
"notification" : {
"title": "Testing",
"body" : "Testing 1 2 3 4 5 6 7"
},
"data" : {
"click_action": "FLUTTER_NOTIFICATION_CLICK",
"route": "/Home",
}
}
onBackgroundMessage: Platform.isAndroid ? BackgroundHandler.backgroundHandler : null
В этом посте упоминается , что onBackgroundMessage не реализован в iOS, просто используется для Android. Есть ли способ обработки в iOS? Спасибо.
Ответ №1:
ДА.
Если вы выполнили все настройки ios firebase с помощью XCode, вы можете использовать встроенные функции swift для прослушивания фоновых уведомлений на iOS.
Внутри вашего AppDelegate
класса,
override func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {
}
override func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any],
fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
/// Here you will get the silent background notification .
/// May be you can call you flutter code from here if you need.
/// Make sure that you end your processing quickly, else you will not get the background notification regularly and timely from iOS.
/// After you completed, make sure you call the completionHandler so that iOS knows you are done with your background task and you completed it so quickly.
completionHandler(UIBackgroundFetchResult.newData)
}
Команда FlutterFire работает над этим, чтобы перейти на сторону flutter, и вы можете ожидать этого очень скоро, я думаю, посмотрев на их PR на GitHub.
Комментарии:
1. Могу ли я узнать, чем отличается эта функция 2? Как вы можете видеть, вторая функция получила completionHandler().
2. Я не уверен, но я думаю, что если у вас есть данные для извлечения из удаленного уведомления, т. Е. Для параметра content-available установлено значение true, будет вызван тот, у которого есть completionHandler. Другой может быть для обычной обработки уведомлений. Пожалуйста, прочитайте документы для ясности.