2016-10-02 2 views
0

Ich habe diese Funktion unter:aktualisieren ausstehenden Benachrichtigungen in iOS 10

@objc func decrementBadges(){ 
    let center = UNUserNotificationCenter.current() 

    center.getPendingNotificationRequests(completionHandler: { (notifications) in 
     print("count", notifications.count) 
     for notification in notifications{ 
      //center.removePendingNotificationRequests(withIdentifiers: notification.title) 
      print(notification.content.badge) 
      print(notification.description) 
     } 
    }) 
} 

Ich versuche, die Ausweisnummern auf alle ausstehenden Benachrichtigungen zu verringern. Ist das möglich? Das notification.content.badge ist schreibgeschützt und ich kann keinen Weg finden es zu setzen.

+0

alle Benachrichtigungen Badges? Sie sprechen nur über ein Abzeichen auf App-Symbol ja? –

+0

Ja, durchlaufen Sie alle ausstehenden Benachrichtigungen und aktualisieren Sie die Ausweisnummer, die beim Auslösen der Benachrichtigung festgelegt wird. – ianhotep

Antwort

2

Was Sie wahrscheinlich tun müssen, ist, die Benachrichtigungen, die Sie ändern möchten, abzubrechen und dann neue mit den neuen Ausweisnummern zu planen. Sie können dies tun, indem Sie die UNNotificationRequest-Kennungen von jeder der Benachrichtigungen in diesem Array erhalten und dann
center.removePendingNotificationRequests(withIdentifiers: [request, identifiers, of, notifications, to, remove])
Dann planen Sie die aktualisierten Benachrichtigungen. hat
Die Dokumentation für UNNotificationRequest.identifier sagt

Wenn Sie die gleiche Kennung verwenden, wenn eine neue Meldung Terminierung, entfernt das System die zuvor geplante Benachrichtigung mit dieser Kennung und ersetzt sie durch die neuen.

Sie sollten also nicht haben sie zuerst zu entfernen, aber das ist bei Ihnen.

+0

Ja, das habe ich getan. Hier ist die Funktion, die ich mir ausgedacht habe. – ianhotep

+0

@objc func decrementBadges (eventId: String) { let center = UNUserNotificationCenter.current() var arrayOfNotifications: [UNNotificationRequest] = [] center.getPendingNotificationRequests (completionHandler: {(Mitteilungen) in print ("Benachrichtigungen. count ", notifications.count) für Benachrichtigungen in Benachrichtigungen { print (notification.description) let content = UNMutableNotificationContent() – ianhotep

1
@objc func decrementBadges(eventId: String){ 
    let center = UNUserNotificationCenter.current() 

    var arrayOfNotifications: [UNNotificationRequest] = [] 

    center.getPendingNotificationRequests(completionHandler: { (notifications) in 
     print("notifications.count", notifications.count) 
     for notification in notifications{ 

      print(notification.description) 

      let content = UNMutableNotificationContent() 

      content.title = notification.content.title 
      content.subtitle = notification.content.subtitle 
      content.body = notification.content.body 
      content.sound = notification.content.sound 
      content.userInfo = notification.content.userInfo 
      content.categoryIdentifier = notification.content.categoryIdentifier 

      if notification.content.badge != nil { 
       var int : Int = Int(notification.content.badge!) 
       int -= 1 
       content.badge = NSNumber(value: int) 
      } 

      let infoDict = content.userInfo as NSDictionary 

      let notificationId:String = infoDict.object(forKey: "IDkey") as! String 

      if notificationId != eventId { 
       let request = UNNotificationRequest(
        identifier: notification.identifier, 
        content: content, 
        trigger: notification.trigger 
       ) 

       arrayOfNotifications.append(request) 
      } 


     } 
    }) 

    self.clearNotifications() 

    for notification in arrayOfNotifications { 

     UNUserNotificationCenter.current().add(
      notification, withCompletionHandler: nil) 
    } 

} 
Verwandte Themen