iOS 12: regroupement des notifications

Cet article, comme le précédent , est consacré aux modifications des notifications qui sont apparues dans iOS 12.



Dans le dernier article, j'ai parlé des innovations générales, cette fois je m'attarderai sur le regroupement des notifications plus en détail.


Regroupement dans iOS 12


Pour que les notifications provenant de votre application soient regroupées dans iOS 12, vous n'avez rien à faire, le regroupement sera effectué automatiquement. Les notifications à l'écran commenceront à s'empiler lorsque leur nombre atteindra 5.



L'utilisateur a la possibilité d'influencer le regroupement via les paramètres système.



  • Automatique (par défaut) - l'application contrôle les paramètres de regroupement.
  • Par application - les paramètres de l'application sont ignorés, toutes les notifications de l'application sont ajoutées à une seule pile.
  • Désactivé - les paramètres d'application sont ignorés, le regroupement des notifications est désactivé.

Configuration du regroupement


Nous ne pouvons influencer le regroupement des messages que si l'indicateur Automatique est utilisé dans les paramètres. Pour ce faire, la notification doit spécifier le paramètre id-thread . Nous transmettons également le thread-id à la notification de sous - titre pour plus de clarté:


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

Nous envoyons plusieurs messages et voyons le résultat du regroupement:



Vous pouvez également transmettre le thread-id pour envoyer des notifications:


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

Lorsque vous spécifiez l'identifiant de la notification, n'oubliez pas de le spécifier dans l' UNNotificationCategory , sinon ils ne seront pas traités dans l'extension pour les notifications:


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

Pour une catégorie, vous pouvez spécifier le format du message qui sera affiché par l'utilisateur sur l'appareil, c'est l'une des innovations d'iOS 12. Vous ne pouvez le faire que lors de l'initialisation de la catégorie:


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

Le paramètre % u est responsable du nombre de messages dans le groupe; il peut être modifié à l'aide de l'argument summaryArgumentCount . Par exemple, vous avez publié une nouvelle sélection de chats, dans laquelle 10 nouvelles photos. Cela n'a aucun sens d'envoyer 10 pistolets à l'utilisateur, vous pouvez envoyer un message avec un compteur égal à 10. Le paramètre % @ affiche la valeur de la variable summaryArgument à l'écran:


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


Dans chaque groupe, nous avons 3 messages, mais du fait que le paramètre summaryArgumentCount est spécifié , le nombre de messages est affiché égal à 20. Et le summaryArgument nous permet d'ajouter le nom de la catégorie à laquelle appartiennent les notifications push. Pas mal, mais nous avons maintenant un problème de localisation.


Localisation


Pour implémenter la tâche de localisation, ajoutez un fichier Stringdict au projet.



Remplacez la clé de chaîne localisée par NOTIFICATION_SUMMARY , sinon les valeurs du dictionnaire ne seront pas traitées, malgré le fait que lorsqu'une chaîne localisée est reçue, une clé avec le nom du dictionnaire est passée en paramètre. Les valeurs restantes sont indiquées dans la figure:



Dans l' inspecteur de fichiers du dictionnaire, sélectionnez Localiser .



Nous spécifions les fichiers pour la localisation.



Nous allons dans les paramètres du projet et ajoutons la langue pour localiser le russe (ru) .



Les fichiers en excès peuvent être supprimés du projet.



Dans le code, nous obtenons la chaîne localisée et la transmettons en tant que paramètre 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: []) 

En conséquence, nous obtenons une excellente localisation des applications.



Le projet créé pour le dernier article a été mis à jour, le code peut être trouvé sur github . Deux rapports de la WWDC ont été consacrés à la mise en œuvre des notifications: Quoi de neuf dans les notifications des utilisateurs et l' utilisation des notifications groupées . Nous serons en mesure de discuter des innovations au MBLT DEV 2018 à Moscou le 28 septembre.


Passez une bonne semaine! ^ _ ^

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


All Articles