Ich habe einen Firebase childAdded
Ereignis-Listener für die Benachrichtigungstabelle in meiner App, die ich Push-Benachrichtigungen auslösen möchte, wenn die App im Hintergrund ist. HierFirebase-Listener, wenn App im Hintergrund ist
ist der Hörer:
@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)")
}
}
}
Dies funktioniert gut, wenn der App im Vordergrund steht. Ich füge dann einen Hintergrund Beobachter in meinen app Delegierten applicationWillResignActive
Verfahren es im Hintergrund zu beobachten:
func applicationWillResignActive(_ application: UIApplication) {
NotificationCenter.default.addObserver(self, selector: #selector(MainNavViewController.observeNotificationsChildAdded), name: notificationBackgroundProcessName, object: nil)
}
Aber das Ereignis Beobachter nicht ausgelöst, wenn die Anwendung im Hintergrund ist. Ive sah in Firebase Cloud-Messenger, dieses Problem zu lösen und Beiträge wie diese kommen across:
aber ich bin nicht eine Push-Benachrichtigung von einem Benutzer zum anderen senden versuchen, ich versuche ein aktivieren UNNotificationRequest
aus dem Datenbank-Listener.
Ich fand auch diesen Beitrag: FCM background notifications not working in iOS aber wieder, das von meinem Anwendungsfall unterscheidet, weil seine im FIRMessaging
Rahmen verwendet wird.
Ist es also möglich, diesen Datenbank-Listener auszuführen, wenn sich die App im Hintergrund befindet? Wenn nicht, ist es möglich, dass Firebase Cloud Messenger Änderungen in einer Tabelle beobachtet und eine Benachrichtigung sendet?
Dies ist definitiv eine gute Option, die ich untersucht habe. Es funktionierte nicht für mich persönlich, weil ich die Benachrichtigungen benötigt, um live zu sein, wo diese Methode die Abrufe periodisch verursacht. –