Notificações locais no desenvolvimento móvel: essência, tipos e como funcionam

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

Uma notificação local é uma mensagem que o aplicativo envia ao usuário sem a participação de um servidor remoto. Todos os dados são processados e exibidos diretamente no dispositivo do destinatário. Esse mecanismo é adequado para lembretes, temporizadores e alarmes quando o aplicativo está em segundo plano ou fechado. De acordo com a Documentação para desenvolvedores da Apple, o UNUserNotificationCenter fornece gerenciamento centralizado de notificações locais no iOS.

Pontos-chave

  • Notificação local — uma mensagem agendada e entregue pelo dispositivo sem envolvimento do servidor
  • Plataformas — Android usa NotificationManager, iOS usa UNUserNotificationCenter
  • Agendamento — as notificações podem ser acionadas por tempo, geolocalização ou calendário
  • Limitações — notificações locais não funcionam entre dispositivos e exigem lógica de sincronização separada
  • UX — notificações configuradas corretamente aumentam o engajamento e trazem o usuário de volta ao aplicativo

O que é uma notificação local?

Uma notificação local é uma mensagem de gatilho gerada e exibida pelo sistema operacional no mesmo dispositivo onde o aplicativo está instalado. Ao contrário das notificações push, as locais não passam por um servidor externo — toda a lógica de agendamento é executada no cliente.

Essas notificações funcionam independentemente do estado do aplicativo: ativo, minimizado ou completamente fechado. O sistema operacional cuida da entrega no horário agendado, enquanto o desenvolvedor especifica apenas o conteúdo e o gatilho.

O sistema garante a entrega da notificação local mesmo sem conexão de rede. Esta é uma vantagem fundamental sobre as notificações push, que exigem conexão estável com a internet e um servidor em funcionamento.

Componentes principais da solicitação

Cada notificação local consiste em três partes: conteúdo (título, corpo, som), gatilho (condição de tempo ou geográfica) e identificador da solicitação. O identificador permite cancelar ou atualizar a notificação antes da entrega.

Um desenvolvedor pode agendar até 64 notificações locais por aplicativo no iOS e um número ilimitado no Android. Essa diferença se deve a restrições arquiteturais dos sistemas operacionais.

Como funcionam as notificações locais no iOS e Android?

Ambas as plataformas fornecem suas próprias APIs para trabalhar com notificações locais. No iOS, o componente central é o UNUserNotificationCenter, no Android — o NotificationManager. Apesar das diferentes interfaces, a lógica é a mesma: o aplicativo cria uma solicitação, registra-a no sistema e o SO entrega a notificação no horário agendado.

O iOS usa UNCalendarNotificationTrigger para eventos de calendário, UNTimeIntervalNotificationTrigger para intervalos e UNLocationNotificationTrigger para geolocalização. O Android oferece AlarmManager, WorkManager e agendamento preciso via setExact.

Desde o Android 12 — SCHEDULE_EXACT_ALARM exige permissão especial do usuário. No iOS, a permissão é solicitada uma vez através do UNUserNotificationCenter.requestAuthorization, e o usuário escolhe o nível de acesso: banners, sons, emblemas.

Tipos de notificações locais

As notificações locais são classificadas por tipo de gatilho, não por conteúdo. Cada tipo determina quando e em que condições a notificação será mostrada ao usuário.

Comparação de gatilhos por plataforma

No iOS e Android, os tipos de gatilhos são implementados de forma diferente, embora a classificação lógica seja a mesma. O iOS usa UNCalendarNotificationTrigger para datas, UNTimeIntervalNotificationTrigger para intervalos e UNLocationNotificationTrigger para geolocalização. O Android oferece AlarmManager com setExact e setRepeating, além do WorkManager para tarefas adiadas.

Tipo de gatilhoDescriçãoExemplo
Intervalo de tempoNotificação N segundos após a inicializaçãoTemporizador de contagem regressiva
Data de calendárioNotificação em data e hora específicasLembrete de reunião
GeolocalizaçãoNotificação ao entrar/sair de uma regiãoLembrete na loja
ImediatoEntrega instantânea ao chamar a APINotificação de download

O iOS também suporta UNNotificationAttachment — anexar uma imagem, áudio ou vídeo ao corpo da notificação. O Android suporta modelos personalizados com botões e imagens grandes através do NotificationCompat.Style.

A escolha do gatilho depende do cenário: lembretes de calendário funcionam melhor com gatilhos de calendário, lembretes geográficos com geolocalização. Gatilhos de intervalo são adequados para eventos recorrentes com período fixo.

Comportamento dos gatilhos em segundo plano

No iOS, as notificações locais são entregues pelo sistema mesmo quando o aplicativo está fechado — o UNUserNotificationCenter gerencia a fila de forma independente. No Android, a entrega depende do mecanismo escolhido: o AlarmManager dispara mesmo com a tela desligada, enquanto o WorkManager leva em conta a economia de energia.

Casos de uso em aplicativos móveis

As notificações locais resolvem tarefas onde a infraestrutura externa é excessiva ou indisponível. Principais cenários: lembretes, temporizadores, dicas de integração e ações adiadas.

  • Lembretes — um aplicativo de calendário cria uma notificação local para a data do evento especificada
  • Dicas de integração — um dia após a instalação, o aplicativo mostra uma dica na tela
  • Temporizadores — um temporizador de cozinha dispara após um tempo determinado mesmo com o aplicativo fechado
  • Progresso de operações — notificação sobre download concluído ou exportação de dados

Pesquisas da Localytics mostram que aplicativos que usam lembretes locais retêm 35% mais usuários na primeira semana após a instalação. Isso torna as notificações locais uma ferramenta poderosa de integração.

É importante não abusar da frequência — o sistema agrupa notificações do mesmo aplicativo e o usuário pode desativar todas as notificações locais se elas se tornarem irritantes. A frequência ideal é de no máximo 2–3 notificações por dia para eventos não críticos.

Exemplo de agendamento no Android

Para agendar uma notificação local no Android, use o NotificationManager junto com o AlarmManager. No Android 8+, você deve primeiro criar um canal de notificações, caso contrário a notificação não será exibida.

kotlin
val channelId = "reminder_channel"
val notificationId = "task_reminder_42"

val channel = NotificationChannel(
    channelId,
    "Lembretes",
    NotificationManager.IMPORTANCE_HIGH
).apply {
    description = "Canal para lembretes de tarefas"
}

val manager = getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)

val intent = Intent(this, ReminderReceiver::class.java).apply {
    putExtra("notification_id", notificationId)
    putExtra("channel_id", channelId)
}

val pendingIntent = PendingIntent.getBroadcast(
    this, notificationId.hashCode(),
    intent, PendingIntent.FLAG_UPDATE_CURRENT
)

val alarmManager = getSystemService(AlarmManager::class.java)
alarmManager.setExact(
    AlarmManager.RTC_WAKEUP,
    triggerTimeMillis,
    pendingIntent
)

No Android 12+, verifique a permissão SCHEDULE_EXACT_ALARM antes de chamar setExact. Se a permissão não for concedida — use setWindow, que garante a entrega dentro de uma janela de tempo.

Manipulação no BroadcastReceiver

Quando o AlarmManager dispara, o sistema envia um Intent de transmissão que é recebido pelo BroadcastReceiver. Dentro dele, você precisa criar e exibir a notificação através do NotificationManager. Certifique-se de que o PendingIntent use FLAG_UPDATE_CURRENT, caso contrário, notificações antigas continuarão usando um Intent desatualizado quando os dados mudarem.

Exemplo de agendamento no iOS

No iOS, as notificações locais são criadas através do UNUserNotificationCenter usando UNMutableNotificationContent e um dos gatilhos. Antes de agendar, você deve solicitar permissão do usuário.

swift
import UserNotifications

let center = UNUserNotificationCenter.current()

center.requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
    guard granted else { return }
}

let content = UNMutableNotificationContent()
content.title = "Lembrete de tarefa"
content.body = "Não se esqueça de concluir o relatório até as 18:00"
content.sound = .default
content.userInfo = ["task_id": "42"]

let trigger = UNTimeIntervalNotificationTrigger(
    timeInterval: 3600,
    repeats: false
)

let request = UNNotificationRequest(
    identifier: "task_reminder_42",
    content: content,
    trigger: trigger
)

center.add(request)

O iOS suporta até 64 solicitações simultâneas de notificações locais. Se o limite for excedido, o sistema rejeita novas solicitações até que as ativas sejam entregues ou canceladas. Use getPendingNotificationRequests para verificar a fila atual.

Manipulação da resposta do delegado

Quando um usuário interage com uma notificação local no iOS, o método userNotificationCenter:didReceive response do delegado UNUserNotificationCenterDelegate é chamado. Este método fornece o identificador da solicitação, actionIdentifier (qual botão foi pressionado) e userInfo personalizado. Isso permite distinguir entre uma simples abertura de notificação e o pressionamento de um botão de ação específico.

Melhores práticas para notificações locais

Para que as notificações locais sejam úteis em vez de irritantes, siga várias regras principais. Primeiro: controle a frequência — no máximo 2–3 notificações por dia para eventos não críticos, caso contrário o usuário desativará todas as notificações do aplicativo.

Segundo: dê escolha ao usuário. Adicione na interface a capacidade de desativar certos tipos de notificações locais. No Android, use um NotificationChannel separado com baixa importância; no iOS, use uma categoria separada nas configurações do aplicativo.

Terceiro: relevância contextual — a notificação deve aparecer quando o usuário precisar dela. Gatilhos geográficos são ideais para lembretes perto de casa, gatilhos de calendário para reuniões, gatilhos de intervalo para atividades regulares como beber água ou alongar-se. Não misture tipos desnecessariamente.

Quarto: teste em dispositivos reais. O simulador do iOS não emula todos os cenários de entrega de notificações locais, especialmente em segundo plano. No Android, use adb shell dumpsys notification para verificar a fila de notificações agendadas e seus parâmetros. Quinto: sempre forneça ao usuário a capacidade de desativar notificações através da interface do aplicativo — este é um requisito obrigatório de UX e das diretrizes de revisão da App Store.

Perguntas frequentes

Qual a diferença entre uma notificação local e uma push?

Uma notificação local é agendada e entregue pelo dispositivo sem envolvimento do servidor. Uma notificação push requer um serviço externo (FCM, APNS) e conexão com a internet. As locais funcionam offline, as push apenas com acesso à rede.

Quantas notificações locais podem ser agendadas?

O iOS limita a 64 solicitações agendadas simultaneamente. O Android não tem um limite rígido, mas mais de 500 notificações podem reduzir o desempenho do sistema e afetar o tempo de entrega.

É possível cancelar uma notificação local após o agendamento?

Sim, no iOS use removePendingNotificationRequests com o identificador da solicitação. No Android, chame NotificationManager.cancel ou cancele o PendingIntent através do AlarmManager. Um identificador único é obrigatório para o cancelamento.

É necessária permissão do usuário para notificações locais?

No iOS, a permissão é obrigatória através do requestAuthorization. No Android 13+ (Tiramisu), a permissão POST_NOTIFICATIONS também é necessária. Versões mais antigas do Android não exigem permissão explícita para notificações locais.

Como adicionar botões a uma notificação local?

No iOS, crie uma UNNotificationAction e adicione-a a UNNotificationCategory. No Android, use NotificationCompat.Builder.addAction com um PendingIntent direcionado ao BroadcastReceiver. Cada botão aciona uma ação separada no aplicativo.

Resumo

  • Notificações locais — mensagens agendadas e entregues pelo dispositivo sem infraestrutura de servidor
  • UNUserNotificationCenter — a API principal para notificações locais no iOS
  • NotificationManager — a API principal para notificações locais no Android
  • Tipos de gatilho — intervalo de tempo, data de calendário, geolocalização e entrega imediata
  • Limites — iOS limita a 64 solicitações agendadas, Android não tem limite rígido
  • Permissões — iOS e Android 13+ exigem consentimento explícito do usuário para notificações
  • Offline — notificações locais funcionam sem conexão com a internet, tornando-as mais confiáveis que push

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