iOS 12: agrupaci贸n de notificaciones

Este art铆culo, como el anterior , est谩 dedicado a los cambios en las notificaciones que aparecieron en iOS 12.



En el 煤ltimo art铆culo habl茅 sobre innovaciones generales, esta vez me detendr茅 en la agrupaci贸n de notificaciones con m谩s detalle.


Agrupaci贸n en iOS 12


Para que las notificaciones provenientes de su aplicaci贸n se agrupen en iOS 12, no necesita hacer nada, la agrupaci贸n se realizar谩 autom谩ticamente. Las notificaciones en la pantalla comenzar谩n a acumularse cuando su n煤mero llegue a 5.



El usuario tiene la oportunidad de influir en la agrupaci贸n a trav茅s de la configuraci贸n del sistema.



  • Autom谩tico (predeterminado): la aplicaci贸n controla la configuraci贸n de agrupaci贸n.
  • Por aplicaci贸n : la configuraci贸n de la aplicaci贸n se ignora, todas las notificaciones de la aplicaci贸n se agregan a una sola pila.
  • Desactivado : la configuraci贸n de la aplicaci贸n se ignora, la agrupaci贸n de notificaciones est谩 desactivada

Configuraci贸n de agrupamiento


Podemos influir en la agrupaci贸n de mensajes solo si se usa el indicador Autom谩tico en la configuraci贸n. Para hacer esto, la notificaci贸n debe especificar el par谩metro thread-id . Tambi茅n pasamos el thread-id a la notificaci贸n de subt铆tulos para mayor claridad:


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

Enviamos varios mensajes y vemos el resultado de la agrupaci贸n:



Tambi茅n puede pasar thread-id para enviar notificaciones:


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

Cuando especifique el identificador para la notificaci贸n, no olvide especificarlo en la categor铆a UNNotificationCategory ; de lo contrario, no se procesar谩n en la extensi贸n para notificaciones:


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

Para una categor铆a, puede especificar el formato del mensaje que el usuario mostrar谩 en el dispositivo, esta es una de las innovaciones de iOS 12. Solo puede hacer esto al inicializar la categor铆a:


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

El par谩metro % u es responsable de la cantidad de mensajes en el grupo; se puede modificar utilizando el argumento summaryArgumentCount . Por ejemplo, public贸 una nueva selecci贸n de gatos, en la que 10 nuevas im谩genes. No tiene sentido enviar 10 pistolas al usuario, puede enviar un mensaje con un contador igual a 10. El par谩metro % @ muestra el valor de la variable summaryArgument en la pantalla:


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


En cada grupo tenemos 3 mensajes, pero debido al hecho de que se especifica el par谩metro summaryArgumentCount , el n煤mero de mensajes se muestra igual a 20. Y el summaryArgument nos permite agregar el nombre de la categor铆a a la que pertenecen las notificaciones push. No est谩 mal, pero ahora tenemos un problema de localizaci贸n.


Localizaci贸n


Para implementar la tarea de localizaci贸n, agregue un archivo Stringdict al proyecto.



Cambie la clave de cadena localizada a NOTIFICATION_SUMMARY , de lo contrario, los valores del diccionario no se procesar谩n, a pesar de que cuando se recibe una cadena localizada, se pasa como par谩metro una clave con el nombre del diccionario. Los valores restantes se muestran en la figura:



En el Inspector de archivos para el diccionario, seleccione Localizar .



Especificamos archivos para localizaci贸n.



Entramos en la configuraci贸n del proyecto y agregamos el idioma para localizar el ruso (ru) .



Los archivos en exceso se pueden eliminar del proyecto.



En el c贸digo, obtenemos la cadena localizada y la pasamos como el par谩metro 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: []) 

Como resultado, obtenemos una excelente localizaci贸n de aplicaciones.



El proyecto creado para el 煤ltimo art铆culo ha sido actualizado, el c贸digo se puede encontrar en github . Dos informes en WWDC se dedicaron a la implementaci贸n de notificaciones: Novedades en las notificaciones de usuarios y Uso de notificaciones agrupadas . Podremos discutir las innovaciones en MBLT DEV 2018 en Mosc煤 el 28 de septiembre.


隆Que tengas una buena semana! ^ _ ^

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


All Articles