У меня есть Firebase childAdded
прослушиватель событий для таблицы уведомлений в моем приложении, что я хотел бы запускать push-уведомления, когда приложение находится в фоновом режиме.Слушатель Firebase, когда приложение находится в фоновом режиме
Вот слушатель:
@objc func observeNotificationsChildAddedBackground() {
self.notificationsBackgroundHandler = FIREBASE_REF!.child("notifications/\(Defaults.userUID!)")
self.notificationsBackgroundHandler!.queryOrdered(byChild: "date").queryLimited(toLast: 99).observe(.childAdded, with: { snapshot in
let newNotificationJSON = snapshot.value as? [String : Any]
if let newNotificationJSON = newNotificationJSON {
let status = newNotificationJSON["status"]
if let status = status as? Int {
if status == 1 {
self.sendPushNotification()
}
}
}
})
}
func sendPushNotification() {
let content = UNMutableNotificationContent()
content.title = "Here is a new notification"
content.subtitle = "new notification push"
content.body = "Someone did something which triggered a notification"
content.sound = UNNotificationSound.default()
let request = UNNotificationRequest(identifier: "\(self.notificationBackgroundProcessName)", content: content, trigger: nil)
NotificationCenter.default.post(name: notificationBackgroundProcessName, object: nil)
UNUserNotificationCenter.current().delegate = self
UNUserNotificationCenter.current().add(request){ error in
if error != nil {
print("error sending a push notification :\(error?.localizedDescription)")
}
}
}
Это прекрасно работает, когда приложение находится на переднем плане. Затем я добавить фоновую наблюдателя в своих делегатов приложение applicationWillResignActive
метод, чтобы наблюдать его в фоновом режиме:
func applicationWillResignActive(_ application: UIApplication) {
NotificationCenter.default.addObserver(self, selector: #selector(MainNavViewController.observeNotificationsChildAdded), name: notificationBackgroundProcessName, object: nil)
}
Но наблюдатель событие не срабатывает, когда приложение работает в фоновом режиме. Ive посмотрел в Firebase Cloud Посланник, чтобы решить эту проблему и через сообщения, как это:
однако я не пытаюсь отправить уведомление толчка от одного пользователя к другому, я пытаюсь активировать UNNotificationRequest
изнутри слушателя базы данных.
Я также нашел этот пост: FCM background notifications not working in iOS , но опять же, это отличается от моего случая использования, потому что его используют в FIRMessaging
рамках.
Итак, возможно ли запустить этот прослушиватель базы данных, когда приложение находится в фоновом режиме? Если нет, возможно ли, чтобы Firebase Cloud Messenger наблюдал изменения в таблице и отправлял уведомление?
Это, безусловно, отличный вариант, который я изучил. Это не сработало для меня лично, потому что мне нужно, чтобы уведомления были вживую, где этот метод вызывает периодические изъятия. –