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! ^ _ ^