Rich Notification: o que é, conteúdo de mídia e criação de notificações

Autor: IT Sectr Publicado: 2026-03-20 Tempo de leitura: 8 min

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

  • Anexos de mídia — Rich Notification suporta imagens (JPEG, PNG, GIF), vídeo (MP4, MOV até 30 segundos) e áudio (MP3, AAC, WAV) via UNNotificationAttachment.
  • Interatividade — botões e entrada de texto são adicionados através de UNNotificationAction e UNTextInputNotificationAction, vinculados a categorias de notificação.
  • Service Extension — um componente obrigatório para carregar mídia: ele baixa o anexo da URL do payload e o adiciona ao conteúdo.
  • Content Extension — cria uma interface de notificação totalmente personalizada com UI própria, animações e manipulação de gestos.
  • Limites — tamanho máximo do anexo 10 MB, limite de memória da extensão 50 MB, tempo de processamento até 30 segundos.

O que é Rich Notification

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.

Evolução das notificações no iOS

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.

Vantagens sobre notificações padrão

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.

Tipos de anexos de mídia e seus formatos

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ídiaFormatos suportadosTamanho máximo
ImagensJPEG, PNG, GIF, TIFF10 MB por arquivo
VídeoMPEG, MP4, MOV10 MB, até 30 segundos
ÁudioMP3, AAC, WAV, CAF10 MB

Imagens e GIFs animados

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.

Anexos de vídeo e áudio

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.

Botões interativos e ações

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 e UNTextInputNotificationAction

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.

Registro de categorias e ações

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.

Manipulação de toques em ações

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.

Implementação de Rich Notification em Swift

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.

swift
// 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
}

Service Extension para carregar imagens

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.

swift
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()
    }
}

Testando Rich Notification

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.

Content Extension e interface personalizada

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.

Storyboard e SwiftUI em Content Extension

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.

Manipulação de ações do usuário

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.

Recomendações de design

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

Qual é o tamanho máximo de imagem em Rich Notification?

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 funcionam em todos os modelos de iPhone?

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.

Pode-se usar GIF em Rich Notification?

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.

Quantos botões podem ser adicionados a uma notificação?

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.

É necessário um servidor para enviar Rich Notifications?

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

  • Rich Notification — uma notificação push iOS com anexos de mídia, botões interativos e UI personalizada que aumenta o engajamento do usuário.
  • Mídia suportada — imagens JPEG/PNG/GIF, vídeo MP4/MOV (até 30 s), áudio MP3/AAC/WAV com limite de 10 MB por arquivo.
  • Service Extension baixa mídia da URL do payload e adiciona UNNotificationAttachment ao conteúdo da notificação.
  • Ações interativas — até 4 botões por categoria, incluindo entrada de texto via UNTextInputNotificationAction.
  • Content Extension substitui a interface padrão por uma visualização UIKit/SwiftUI personalizada com elementos arbitrários.
  • Content Extension implementa o protocolo UNNotificationContentExtension com o método didReceive para manipular toques e atualizar a UI em tempo real.
  • Rich Notification requer configuração em todos os níveis: servidor (APNS), Service Extension (carregamento de mídia) e AppDelegate (registro de categorias).

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.

Discutir o projeto

Leia também