iOS 12: agrupamento de notificações

Este artigo, como o anterior , é dedicado às alterações nas notificações exibidas no iOS 12.



No último artigo, falei sobre inovações gerais, desta vez abordarei o agrupamento de notificações com mais detalhes.


Agrupando no iOS 12


Para que as notificações provenientes do seu aplicativo sejam agrupadas no iOS 12, você não precisa fazer nada, o agrupamento será realizado automaticamente. As notificações na tela começarão a empilhar quando o número atingir 5.



O usuário tem a oportunidade de influenciar o agrupamento nas configurações do sistema.



  • Automático (padrão) - o aplicativo controla as configurações de agrupamento.
  • Por aplicativo - as configurações do aplicativo são ignoradas, todas as notificações do aplicativo são adicionadas a uma única pilha.
  • As configurações de fora do aplicativo são ignoradas, o agrupamento de notificações é desativado.

Configuração de agrupamento


Só podemos influenciar o agrupamento de mensagens se o sinalizador Automático for usado nas configurações. Para fazer isso, a notificação deve especificar o parâmetro id da thread . Também passamos o ID do segmento para a notificação da legenda para maior clareza:


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

Enviamos várias mensagens e vemos o resultado do agrupamento:



Você também pode passar o ID do thread para enviar notificações por push:


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

Quando você especifica o identificador para a notificação, não se esqueça de especificá-lo na UNNotificationCategory , caso contrário, eles não serão processados ​​na extensão para notificações:


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

Para uma categoria, você pode especificar o formato da mensagem que será exibida pelo usuário no dispositivo. Essa é uma das inovações do iOS 12. Você só pode fazer isso ao inicializar a categoria:


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

O parâmetro % u é responsável pelo número de mensagens no grupo e pode ser modificado usando o argumento summaryArgumentCount . Por exemplo, você publicou uma nova seleção de gatos, na qual 10 novas fotos. Não faz sentido enviar 10 armas para o usuário, você pode enviar uma mensagem com um contador igual a 10. O parâmetro % @ exibe o valor da variável summaryArgument na tela:


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


Em cada grupo, temos 3 mensagens, mas devido ao fato de o parâmetro summaryArgumentCount ser especificado , o número de mensagens é exibido igual a 20. E o summaryArgument nos permite adicionar o nome da categoria à qual as notificações por push pertencem. Nada mal, mas agora temos um problema de localização.


Localização


Para implementar a tarefa de localização, adicione um arquivo Stringdict ao projeto.



Altere a Chave da cadeia localizada para NOTIFICATION_SUMMARY , caso contrário, os valores do dicionário não serão processados, apesar do fato de que quando uma cadeia localizada é recebida, uma chave com o nome do dicionário é passada como parâmetro. Os valores restantes são mostrados na figura:



No Inspetor de arquivos do dicionário, selecione Localizar .



Nós especificamos arquivos para localização.



Vamos às configurações do projeto e adicionamos o idioma para localizar o russo (ru) .



Arquivos em excesso podem ser excluídos do projeto.



No código, obtemos a sequência localizada e a passamos como o 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, obtemos excelente localização de aplicativos.



O projeto criado para o último artigo foi atualizado, o código pode ser encontrado no github . Dois relatórios na WWDC foram dedicados à implementação de notificações: O que há de novo em Notificações de usuário e Uso de notificações agrupadas . Poderemos discutir as inovações na MBLT DEV 2018 em Moscou, no dia 28 de setembro.


Tenham uma ótima semana! ^ _ ^

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


All Articles