2017-09-12 1 views
0

Fond:Comment afficher plusieurs notifications locales

Je crée une application dans laquelle un bot vous envoie des messages. Ces messages peuvent être reçus en tant que notification locale.

Le problème:

Lorsque le robot envoie plusieurs notifications dans un court laps de temps (1 seconde entre chaque message), le centre de notification n'affichera un message. J'entendrai la notification sonore à chaque fois que j'attends, mais je ne verrai toujours que le premier message.

Code pertinent:

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

Comme mentionné par Arnav c'est fonctionnalité attendue, alors maintenant la question devient, ce que je s une bonne solution de contournement? – osebas15

+0

Le problème était que j'essayais d'envoyer les notifications de l'application même si l'application était devenue inactive. Il a été résolu en réalisant cela et en faisant la queue toutes les notifications à venir avant que l'application ne perde réellement le statut actif – osebas15

Répondre

1

Rien de mal à votre code:

Comme vous avez écrit dans votre question, ce qui est mentionné dans l'Apple Docs:

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

merci pour votre réponse et le lien, peut-être pourriez-vous me diriger vers une solution de contournement? – osebas15