Hintergrund:So zeigen Sie mehrere lokale Benachrichtigungen an
Ich schreibe eine Anwendung, wo ein Bot Ihnen Nachrichten sendet. Diese Nachrichten können als lokale Benachrichtigung empfangen werden.
Das Problem:
Wenn der Bot mehrere Benachrichtigungen innerhalb kurzer Zeit (1 Sekunde zwischen jedem message) sendet, wird die Mitteilungszentrale zeigt nur eine Nachricht. Ich werde die Benachrichtigung jedes Mal hören, wenn ich es erwarte, aber ich werde immer noch nur die erste Nachricht sehen.
Relevante Code:
func postUserNotification(content: String, delay: TimeInterval, withDictionary dictionary: [String:String] = [:]) {
let notificationContent = UNMutableNotificationContent()
notificationContent.body = content
notificationContent.userInfo = dictionary
notificationContent.categoryIdentifier = "message"
let dateAfterDelay = Date(timeIntervalSinceNow: delay)
let dateComponents = Calendar.current.dateComponents([.year,.month,.day,.hour,.minute,.second], from: dateAfterDelay)
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false)
let identifier = "identifier" + "\(NotificationManager.incrementor)"
let localNotification = UNNotificationRequest(identifier: identifier, content: notificationContent, trigger: trigger)
UNUserNotificationCenter.current().add(localNotification){ (error : Error?) in
if let theError = error {
print("the error is \(theError.localizedDescription)")
}
}
}
Wie von Arnav erwähnt, ist dies die erwartete Funktionalität, und nun stellt sich die Frage, was ich tun soll s ein guter Workaround? – osebas15
Das Problem war, dass ich versuchte, die Benachrichtigungen von der App zu senden, obwohl die App inaktiv geworden war. Es wurde gelöst, indem dies erkannt wurde und alle bevorstehenden Benachrichtigungen in die Warteschlange gestellt wurden, bevor die App tatsächlich den aktiven Status verlor. – osebas15