Implementação Prática do Sistema de Notificações Push com UniPush 2.0

Visão Geral da Arquitetura de Notificações Push

Este artigo detalha a implementação completa do sistema de notificações push usando o UniPush 2.0, desde a configuração inicial até a prática de implantação. O UniPush 2.0 simplifica a integração com múltiplos fabricantes de dispositivos Android e iOS, fornecendo uma interface unificada para o envio de mensagens push.

1. Configuração dos Parâmetros dos Fabricantes

A configuração correta é essencial para garantir a entrega das notificações. Abaixo estão os pontos-chave para cada fabricante:

  • Huawei: Necessita de appId, appSecret e nome do pacote. O nome do pacote deve corresponder exatamente ao do aplicativo.
  • Xiaomi: Requer AppID, AppKey e AppSecret. A chave SHA1 deve ser precisamente configurada.
  • OPPO: Exige AppKey e AppSecret, com upload do certificado de assinatura.
  • vivo: Precisa de appId, appKey e appSecret, com um processo de aprovação mais lento.
  • Apple (APNs): Utiliza APNs Key ou certificado p12. Certificados expirados são uma causa comum de falha.

Recomenda-se configurar todos os parâmetros no painel do DCloud em UniPush > Canais dos Fabricantes. Certifique-se de que o nome do pacote e a assinatura sejam idênticos aos do aplicativo, e documente todas as chaves/certificados para referência da equipe.

2. Obtenção do Client ID no Dispositivo

O clientId é um identificador único para cada dispositivo e deve ser coletado no aplicativo e enviado ao serivdor backend. Abaixo está um exemplo de código reescrito em JavaScript para o aplicativo cliente:


function fetchDeviceIdentifier() {
  uni.getPushClientId({
    success: function(callbackData) {
      var deviceToken = callbackData.cid;
      console.log("Identificador do dispositivo:", deviceToken);
      transmitIdentifierToServer(deviceToken);
    },
    error: function(callbackError) {
      console.error("Falha ao obter identificador:", callbackError);
    }
  });
}

// Configurar listener para mensagens recebidas
uni.onPushMessage(function(payload) {
  console.log("Mensagem push recebida:", payload);
});

Destaques importantes: solicite permissão de notificação na primeira instalação do aplicativo e atualize o clientId sempre que o aplicativo for iniciado, pois ele pode mudar.

3. Armazenamento do Client ID no Backend

No servidor, crie uma tabela para mapear usuários a seus deviceIds. Exemplo de estrutura de tabela:

  • id: Identificador único (auto-incremento)
  • usuario_id: Referência ao usuário no sistema
  • device_id: O clientId recebido do dispositivo
  • info_dispositivo: Modelo e sistema operacional
  • atualizado_em: Timestamp da última atualização

Isso permite enviar notificações específicas por usuário, consultando os deviceIds associados.

4. Envio de Notificações via API Backend

Utilize a API REST do UniPush para disparar mensagens. Exemplo de código backend reescrito em Node.js:


const axios = require('axios');

async function enviarNotificacaoParaUsuario(idUsuario, titulo, conteudo) {
  const deviceId = await bancoDados.obterDeviceIdPorUsuario(idUsuario);
  
  const payload = {
    cid: deviceId,
    message: {
      titulo: titulo,
      corpo: conteudo
    }
  };
  
  await axios.post('https://restapi.getui.com/v2/{appId}/push/single', payload, {
    headers: { 'Authorization': 'Bearer SEU_TOKEN' }
  });
}

Adapte as URLs e tokens conforme a documentação do UniPush 2.0.

5. Tipos de Mensagens: Notificação vs. Transmissão

  • Mensagem de Notificação: Exibida diretamente na barra de status. Ideal para alertas como pedidos ou anúncios. Funciona mesmo com o aplicativo em segundo plano.
  • Mensagem de Transmissão: Não exibe interface visível; requer processamento no aplicativo ativo. Adequada para sincronização de dados em tempo real.

Na prática, prefira notificações para a maioria dos casos, pois são mais confiáveis em segundo plano no Android.

6. Soluções para Problemas Comuns

  • Android: Teste sempre com um APK assinado com chaves de produção, não no modo de desenvolvimento.
  • iOS: Use certificados válidos e teste em dispositivos físicos, nunca em simuladores.
  • Client ID Variável: Implemente atualização periódica do identificador no cliente.
  • Permissões: Garanta que o usuário conceda permissão para notificações, especialmenet no iOS.

7. Práticas Recomendadas

  • Sincronize o client ID sempre que o aplicativo for iniciado.
  • Mantenha uma tabela relacional entre usuários e deviceIds no backend.
  • Combine estratégias: use transmissão para dados em tempo real e notificações para alertas visuais.
  • Implemente logging detalhado para rastrear falhas no envio, incluindo deviceId, erros e metadados do dispositivo.
  • Configure monitoramento e alertas para falhas nos serviços de push.

Tags: UniPush notificações push android ios API REST

Publicado em 7-11 20:44