2017-09-12 4 views
0

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)") 
     } 
    } 
} 
+0

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

+0

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

Antwort

1

Nichts falsch mit Ihrem Code:

wie Sie in Ihrer Frage schreiben, ist dies in der Apple-Docs erwähnt:

If you are sending multiple notifications to the same device or 
computer within a short period of time, the push service will send only 
the last one. 

https://developer.apple.com/library/content/technotes/tn2265/_index.html#//apple_ref/doc/uid/DTS40010376-CH1-TNTAG23

+0

Vielen Dank für Ihre Antwort und den Link, vielleicht könnten Sie mich auf eine Problemumgehung hinweisen? – osebas15

Verwandte Themen