Rich Notification é um formato aprimorado de notificações push iOS que inclui anexos de mídia, botões interativos e interfaces personalizadas para melhorar a experiência do usuário. Ao contrário das notificações de texto padrão, Rich Notification pode exibir imagens, vídeos e áudio diretamente no banner ou na tela de bloqueio. De acordo com Apple Developer Documentation, 2026, UNNotificationAttachment suporta até 10 arquivos em uma única notificação e os dimensiona automaticamente para exibição ideal em todos os dispositivos.
Principais pontos
Rich Notification é uma notificação push iOS que contém não apenas texto, mas também anexos de mídia, elementos interativos e uma interface personalizada. O termo “rich” (rico) reflete a capacidade de incluir imagens, vídeos, áudio, botões de ação e entrada de texto em uma notificação, transformando um alerta simples em um elemento interativo completo.
A Apple introduziu o suporte a Rich Notification no iOS 10 junto com o framework UserNotifications. Antes disso, as notificações push podiam conter apenas texto, som e um badge. iOS 10 apresentou UNNotificationServiceExtension e UNNotificationContentExtension, que abriram a possibilidade de modificar o conteúdo e criar interfaces personalizadas. Versões posteriores adicionaram suporte a SwiftUI em Content Extension, GIFs animados e melhor dimensionamento de mídia.
Rich Notification aumenta significativamente o engajamento do usuário. Estudos da Apple mostram que notificações com imagens recebem 30–40% mais interações em comparação com as que têm apenas texto. Uma imagem de produto, prévia de vídeo ou botão de resposta rápida permitem que o usuário tome uma decisão diretamente da notificação sem abrir o aplicativo. Isso encurta o caminho até a ação desejada e melhora a experiência do usuário.
UNNotificationAttachment suporta três categorias de mídia: imagens, vídeo e áudio. Cada tipo tem suas próprias limitações de formato, tamanho e duração. O sistema dimensiona automaticamente as imagens para caber no tamanho da notificação e limita a duração do vídeo a 30 segundos para otimização de desempenho.
| Tipo de mídia | Formatos suportados | Tamanho máximo |
|---|---|---|
| Imagens | JPEG, PNG, GIF, TIFF | 10 MB por arquivo |
| Vídeo | MPEG, MP4, MOV | 10 MB, até 30 segundos |
| Áudio | MP3, AAC, WAV, CAF | 10 MB |
As imagens são automaticamente cortadas e dimensionadas pelo sistema para exibição em visualizações de notificação compactas e expandidas. GIFs animados são suportados a partir do iOS 12 e reproduzidos automaticamente ao visualizar a notificação. O tamanho de imagem recomendado é 1024x1024 pixels, garantindo exibição nítida em todos os dispositivos, incluindo iPad com tela grande.
O vídeo em Rich Notification é reproduzido sem som por padrão — o usuário pode ativar o som através do botão do player. A duração máxima do vídeo é de 30 segundos, após os quais a reprodução é interrompida. Anexos de áudio podem ser usados para mensagens de voz ou prévias de som e são reproduzidos ao tocar na notificação no modo expandido.
Ações interativas permitem que o usuário realize operações diretamente da notificação sem abrir o aplicativo. As ações são registradas através de UNNotificationCategory e UNNotificationAction na inicialização do aplicativo. Cada ação pode ser em segundo plano (sem abrir o aplicativo) ou em primeiro plano (abre o aplicativo para concluir a operação).
UNNotificationAction representa um botão com um título e modificadores opcionais como requiresAuthentication (requer Face ID/Touch ID) ou destructive (destacado em vermelho). UNTextInputNotificationAction estende essa capacidade adicionando um campo de entrada de texto — ideal para respostas rápidas a mensagens ou comentários. As ações são exibidas ao pressionar longamente a notificação ou deslizar para baixo.
As categorias de notificação vinculam o tipo de conteúdo a um conjunto de ações disponíveis. O processo de registro é realizado no AppDelegate na inicialização do aplicativo através de UNUserNotificationCenter.current().setNotificationCategories. A categoria é especificada no servidor no campo category do payload JSON, e o sistema aplica automaticamente o conjunto de ações correspondente à notificação.
Quando o usuário toca em um botão ou envia texto, o sistema chama o delegate UNUserNotificationCenterDelegate com o método didReceive response. UNNotificationResponse contém o identificador da ação e o texto inserido (para UNTextInputNotificationAction). Com base nessas informações, o aplicativo executa a lógica de negócios correspondente: envia uma mensagem, confirma uma ação ou abre uma tela específica.
Vamos percorrer o ciclo completo de criação de Rich Notification: desde o registro de categorias no AppDelegate até o processamento em Service Extension e exibição. AppDelegate registra a categoria com botões, o servidor envia uma notificação com uma URL de imagem, Service Extension baixa a mídia e Content Extension exibe uma interface personalizada com botões.
// AppDelegate — registro de categorias e ações
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
let replyAction = UNTextInputNotificationAction(
identifier: "reply",
title: "Responder",
options: [.authenticationRequired])
let likeAction = UNNotificationAction(
identifier: "like",
title: "Curtir",
options: [])
let category = UNNotificationCategory(
identifier: "social_post",
actions: [replyAction, likeAction],
intentIdentifiers: [],
options: [])
UNUserNotificationCenter.current()
.setNotificationCategories([category])
return true
}
Após receber uma notificação push com a categoria “social_post” e uma URL de imagem em um campo personalizado, a Service Extension é ativada. A extensão baixa a imagem da rede, cria um UNNotificationAttachment com um identificador único e o adiciona ao conteúdo. É importante verificar o tamanho do arquivo baixado — se exceder 10 MB, o anexo não será criado e o sistema exibirá a notificação sem mídia.
class NotificationService: UNNotificationServiceExtension {
override func didReceive(
_ request: UNNotificationRequest,
withContentHandler contentHandler:
@escaping (UNNotificationContent) -> Void
) {
let content = (request.content.mutableCopy()
as! UNMutableNotificationContent)
guard let urlString = content.userInfo["media-url"]
as? String,
let url = URL(string: urlString)
else { contentHandler(request.content); return }
URLSession.shared.downloadTask(with: url) {
location, _, _ in
guard let location = location else {
contentHandler(content); return }
let attachment = try! UNNotificationAttachment(
identifier: "media", url: location,
options: [UNNotificationAttachmentOptionsTypeHintKey:
"jpg"])
content.attachments = [attachment]
contentHandler(content)
}.resume()
}
}
Para testar Rich Notification sem servidor, use o simulador iOS e envie pushes pelo terminal usando xcrun simctl push. No payload, certifique-se de especificar mutable-content: 1 para ativar a Service Extension e a categoria para exibir as ações. O comando dispara um push de um arquivo JSON diretamente para o simulador selecionado, permitindo iteração rápida sem configurar infraestrutura de servidor.
UNNotificationContentExtension permite substituir completamente a interface de notificação padrão por uma visualização UIKit ou SwiftUI personalizada. A extensão é ativada quando o usuário expande a notificação (force touch ou deslizar para baixo) e pode conter botões, controles deslizantes, animações e quaisquer outros componentes de UI. O tamanho da interface se adapta ao conteúdo usando Auto Layout.
Content Extension é baseado em um storyboard com um controlador de visualização herdando UIViewController. SwiftUI View é integrada através de UIHostingController a partir do iOS 16, permitindo abordagens modernas para construção de interface. Para compatibilidade com iOS 14–15, recomenda-se usar UIKit com arquivos xib. A interface recebe conteúdo modificado da Service Extension através de UNNotificationContent.
Content Extension implementa o protocolo UNNotificationContentExtension com o método didReceive response. UNNotificationResponse contém informações sobre o botão pressionado ou texto inserido. A extensão pode atualizar a interface sem fechar a notificação ou chamar o completion handler para fechá-la. Isso permite criar cenários de interação rápida, como um “curtir” com feedback visual diretamente na notificação.
A Apple recomenda manter a Content Extension concisa e funcional, evitando elementos excessivos. A altura máxima da notificação expandida é de cerca de 400 pontos, após os quais o conteúdo rola. Use fontes e espaçamentos do sistema para consistência com outras notificações. Teste em diferentes tamanhos de tela para garantir que a interface seja exibida corretamente tanto no iPhone quanto no iPad.
Perguntas frequentes
O tamanho máximo de um anexo de mídia é 10 MB. Se o limite for excedido, o UNNotificationAttachment não é criado e a notificação é exibida sem mídia. Recomenda-se otimizar imagens para 1–3 MB para carregamento rápido na Service Extension.
Rich Notifications são suportadas em todos os dispositivos com iOS 10 e versões posteriores, incluindo iPhone 5s e mais recentes. Content Extension com UI personalizada está disponível a partir do iOS 12. SwiftUI em Content Extension — a partir do iOS 16. Em versões mais antigas, a notificação é exibida no formato padrão.
Sim, GIFs animados são suportados a partir do iOS 12. O GIF é carregado via UNNotificationAttachment como uma imagem comum e é reproduzido automaticamente ao visualizar a notificação. O tamanho do GIF é limitado aos mesmos 10 MB que outros formatos.
Máximo de 4 ações por notificação ao registrar uma categoria. Se mais forem especificadas, o sistema exibe as primeiras 4 e ignora o restante. Recomenda-se usar 2–3 botões para UX ideal — muitas opções sobrecarregam a interface.
Sim, o servidor deve enviar pushes através do APNS (serviço de notificações push da Apple) com um payload JSON contendo a URL do arquivo de mídia em um campo personalizado e a flag mutable-content: 1. O servidor também especifica a categoria para ativar a Content Extension e as ações.
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também