iOS 12: Benachrichtigungsgruppierung

Dieser Artikel ist wie der vorherige den Änderungen in Benachrichtigungen gewidmet , die in iOS 12 angezeigt wurden.



Im letzten Artikel habe ich über allgemeine Neuerungen gesprochen, diesmal werde ich näher auf die Gruppierung von Benachrichtigungen eingehen.


Gruppierung in iOS 12


Damit die Benachrichtigungen aus Ihrer Anwendung in iOS 12 gruppiert werden können, müssen Sie nichts tun. Die Gruppierung wird automatisch durchgeführt. Benachrichtigungen auf dem Bildschirm werden gestapelt, sobald ihre Anzahl 5 erreicht.



Der Benutzer hat die Möglichkeit, die Gruppierung über die Systemeinstellungen zu beeinflussen.



  • Automatisch (Standard) - Die Anwendung steuert die Gruppierungseinstellungen.
  • Nach App - Anwendungseinstellungen werden ignoriert, alle Benachrichtigungen aus der Anwendung werden einem einzelnen Stapel hinzugefügt.
  • Aus - Anwendungseinstellungen werden ignoriert, Benachrichtigungsgruppierung ist deaktiviert.

Gruppierungssetup


Wir können die Gruppierung von Nachrichten nur beeinflussen, wenn in den Einstellungen das Flag Automatisch verwendet wird. Dazu muss in der Benachrichtigung der Parameter thread-id angegeben werden. Aus Gründen der Übersichtlichkeit übergeben wir die Thread-ID auch an die Untertitelbenachrichtigung :


let content = UNMutableNotificationContent() content.threadIdentifier = threadId content.subtitle = "Thread ID: \(threadId)" 

Wir senden mehrere Nachrichten und sehen das Ergebnis der Gruppierung:



Sie können die Thread-ID auch an Push-Benachrichtigungen übergeben:


 { "aps" : { "alert" : { "title" : "Cat Title" "body" : "Cat Body" } "thread-id" : "all-cats" } } 

Wenn Sie den Bezeichner für die Benachrichtigung angeben, vergessen Sie nicht, ihn in der UNNotificationCategory anzugeben , da er sonst nicht in der Erweiterung für Benachrichtigungen verarbeitet wird:


 UNNotificationCategory(identifier: "Cat-Category", actions: actions, intentIdentifiers: ["all-cats", "3-star-cats"], options: []) 

Für eine Kategorie können Sie das Format der Nachricht angeben, die vom Benutzer auf dem Gerät angezeigt wird. Dies ist eine der Innovationen von iOS 12. Sie können dies nur tun, wenn Sie die Kategorie initialisieren:


 UNNotificationCategory(identifier: "category-simple", actions: actions, intentIdentifiers: ["all-cats", "3-star-cats"], hiddenPreviewsBodyPlaceholder: nil, categorySummaryFormat: "%u     %@", options: []) 

Der Parameter % u ist für die Anzahl der Nachrichten in der Gruppe verantwortlich und kann mit dem Argument summaryArgumentCount geändert werden. Sie haben beispielsweise eine neue Auswahl an Katzen veröffentlicht, in der 10 neue Bilder enthalten sind. Es macht keinen Sinn, 10 Pistolen an den Benutzer zu senden. Sie können eine Nachricht mit einem Zähler von 10 senden. Der Parameter % @ zeigt den Wert der Variablen summaryArgument auf dem Bildschirm an:


 let content = UNMutableNotificationContent() content.summaryArgumentCount = 10 content.summaryArgument = " " 


In jeder Gruppe haben wir 3 Nachrichten, aber aufgrund der Tatsache, dass der Parameter summaryArgumentCount angegeben ist, wird die Anzahl der Nachrichten gleich 20 angezeigt. Mit dem summaryArgument können wir den Namen der Kategorie hinzufügen, zu der Push-Benachrichtigungen gehören. Nicht schlecht, aber jetzt haben wir ein Lokalisierungsproblem.


Lokalisierung


Fügen Sie dem Projekt eine Stringdict-Datei hinzu , um die Lokalisierungsaufgabe zu implementieren.



Ändern Sie den lokalisierten Zeichenfolgenschlüssel in NOTIFICATION_SUMMARY . Andernfalls werden die Werte aus dem Wörterbuch nicht verarbeitet, obwohl beim Empfang einer lokalisierten Zeichenfolge ein Schlüssel mit dem Namen des Wörterbuchs als Parameter übergeben wird. Die restlichen Werte sind in der Abbildung dargestellt:



Wählen Sie im Dateiinspektor für das Wörterbuch Lokalisieren aus .



Wir geben Dateien für die Lokalisierung an.



Wir gehen in die Projekteinstellungen und fügen die Sprache hinzu, um Russisch (ru) zu lokalisieren.



Überschüssige Dateien können aus dem Projekt gelöscht werden.



Im Code erhalten wir die lokalisierte Zeichenfolge und übergeben sie als Parameter categorySummaryFormat :


 let summary = NSString.localizedUserNotificationString(forKey: "NOTIFICATION_SUMMARY", arguments: nil) let category = UNNotificationCategory(identifier: "Cat-Category", actions: actions, intentIdentifiers: ["all-cats", "3-star-cats"], hiddenPreviewsBodyPlaceholder: nil, categorySummaryFormat: summary, options: []) 

Als Ergebnis erhalten wir eine hervorragende Anwendungslokalisierung.



Das für den letzten Artikel erstellte Projekt wurde aktualisiert, der Code ist auf github zu finden. Zwei Berichte auf der WWDC befassten sich mit der Implementierung von Benachrichtigungen: Was ist neu in Benutzerbenachrichtigungen und Verwenden gruppierter Benachrichtigungen? Wir werden die Innovationen auf der MBLT DEV 2018 am 28. September in Moskau diskutieren können.


Schöne Woche! ^ _ ^

Source: https://habr.com/ru/post/de416439/


All Articles