Use o SDK Xtremepush para integrar seus aplicativos React Native com a plataforma
Pré-requisitos
Antes de começar, certifique-se de ter o seguinte:
Requisitos Gerais
React Native 0.71+ (fluxo de trabalho puro, não-Expo)
Node.js 16.0+
Uma conta Xtremepush com sua Chave de Aplicação
Requisitos para Android
Android Studio com Android SDK instalado
Nota 7.0+
SDK mínimo: API 21 (Android 5.0)
SDK do alvo: 34
Projeto Firebase com
google-services.json(guia de configuração do Console Firebase)
Requisitos para iOS
Xcode 13.0+
Meta de Implantação no iOS: 13.0+
CocoaPods 1.11+
Conta Apple Developer com capacidade de Notificações Push ativada
Etapas de Integração
Passo 1: Instalar o SDK
Adicione a CLI Xtremepush ao seu projeto usando npm ou Yarn:
npm install xtremepush-react-native-cliyarn add xtremepush-react-native-cliPasso 2: Configurar o SDK
2.1 Gerar arquivo de configuração
Execute o seguinte comando para criar um modelo de configuração:
npx xtremepush-setup generate-configIsso cria xtremepush.config.js a raiz do seu projeto.
2.2 Adicione suas credenciais
Abra xtremepush.config.js e adicione suas credenciais Xtremepush:
// xtremepush.config.js
module.exports = {
// REQUIRED: Your Xtremepush Application Key
applicationKey: 'YOUR_XTREMEPUSH_APP_KEY',
// REQUIRED for Android: Firebase Cloud Messaging Sender ID
googleSenderId: 'YOUR_FCM_SENDER_ID',
// Enable debug logging during development
enableDebugLogs: true,
// iOS: Your Apple Development Team ID (required for Rich Media)
devTeam: 'YOUR_APPLE_TEAM_ID',
};2.3 Execute a Integração
Execute o comando de integração:
npx xtremepush-setup initO CLI irá automaticamente:
Detecte a estrutura do seu projeto (Android/iOS, Java/Kotlin, Swift/Objective-C)
Modificar arquivos nativos de build e manifestos
Injetar código de inicialização do SDK
Criar módulos nativos de ponte
Passo 3: Configuração do Android
Após rodar a integração, complete a configuração do Android:
3.1 Adicionar Configuração da Base de Fogo
Baixe
google-services.jsondo Console FirebaseColoque no seu
android/app/diretório:
Verifique se o arquivo existe
# Verify the file exists
ls android/app/google-services.jsonSem esse arquivo, seu aplicativo Android travará ao iniciar com um erro de inicialização do Firebase.
3.2 Construa o App Android
# Clean the build
cd android && ./gradlew clean && cd ..
# Run the app
npx react-native run-androidErros comuns de build do Android
A sincronização do Gradle falhou com erros de resolução de dependências
Solução:
Verifique sua conexão com a Internet
Limpar e reconstruir:
cd android && ./gradlew cleanErro de inicialização do Firebase no lançamento do aplicativo
Certifique-se google-services.json de que está corretamente colocado em android/app/. Baixe do console Firebase se estiver faltando.
Passo 4: Configuração do iOS
Depois de confirmar sua build para Android, continue com a configuração do iOS:
4.1 Instalar Dependências do CocoaPods
cd ios && pod install && cd ..4.2 Abrir no Xcode
open ios/YourApp.xcworkspace4.3 Habilitar Notificações Push
No Xcode, selecione seu projeto no navegador
Selecione o alvo do seu app
Vá para a aba Assinatura & Capacidades
Clique + Capacidade
Adicionar Notificações Push
4.4 Ativar Modos em Segundo Plano (Opcional)
Para o gerenciamento de notificações em segundo plano:
Em Assinatura & Capacidades, clique + Capacidade
Adicionar Modos de Fundo
Verifique notificações remotas
4.5 Construa o App iOS
npx react-native run-iosErros comuns de compilação do iOS
Instalação do pod falhou
Solução:
cd ios
pod repo update
rm -rf Pods Podfile.lock
pod installCapacidade de notificações push não encontrada
Solução: Certifique-se de ter uma conta Apple Developer com uma associação ativa e que a funcionalidade de Notificações Push esteja ativada para seu ID de App no Apple Developer Portal.
Passo 5: Inicialize no seu aplicativo
Adicione a inicialização do Xtremepush ao seu código React Native:
// App.js or App.tsx
import React, { useEffect } from 'react';
import { NativeModules, Platform } from 'react-native';
const Xtremepush = NativeModules.Xtremepush;
const App = () => {
useEffect(() => {
// Request notification permissions (required for Android 13+)
Xtremepush.requestNotificationPermissions();
// Check if app was opened from a notification
Xtremepush.getInitialNotification().then(notification => {
if (notification) {
console.log('App opened from notification:', notification);
// Handle deep linking based on notification payload
}
});
}, []);
return (
// Your app content
);
};
export default App;Passo 6: Teste sua Integração
6.1 Verificar a Integração do SDK
Execute o comando de verificação:
npx xtremepush-setup verifyPara resultados detalhados:
npx xtremepush-setup verify --verbose6.2 Verifique os Logs de Depuração
Se você ativou enableDebugLogs: true na sua configuração, verá logs do SDK:
Android: Android Studio Logcat (filtro por "Xtremepush")
iOS: Xcode Console
Referência de Configuração
Todas as opções de configuração
Opção | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
| String | Sim | — | Sua chave de aplicação Xtremepush |
| String | Sim | — | ID do remetente da Firebase Cloud Messaging (apenas Android) |
| String | Não |
| Chave específica do app para iOS se for diferente |
| String | Não |
| Chave específica do app Android se for diferente |
| Booleano | Não |
| Habilitar o registro de depuração do SDK |
| Booleano | Não |
| Permitir permissões de localização |
| Booleano | Não |
| Habilitar geofencing |
| Booleano | Não |
| Habilitar suporte ao iBeacon |
| Booleano | Não |
| Habilitar notificações ricas (Extensão do Serviço iOS) |
| String | Não | — | URL personalizada do servidor Xtremepush |
| Booleano | Não |
| Use servidor regional dos EUA |
| Booleano | Não |
| Habilitar o fixing de certificados SSL |
| String | Não | — | Caminho para o certificado SSL ( |
| String | Não | — | ID de equipe Apple (necessário para extensão de serviço) |
| String | Não |
| APNs ambiente: |
Exemplo: Configuração Completa
// xtremepush.config.js
module.exports = {
// Required
applicationKey: 'YOUR_XTREMEPUSH_APP_KEY',
googleSenderId: 'YOUR_FCM_SENDER_ID',
// Platform-specific keys (optional)
iosAppKey: 'YOUR_IOS_APP_KEY',
androidAppKey: 'YOUR_ANDROID_APP_KEY',
// Features
enableDebugLogs: false, // Disable in production
enableLocationServices: true,
enableGeo: true, // Geofencing
enableBeacons: false, // iBeacon support
enableRichMedia: true, // Rich push (iOS)
// Server
useUsServer: false,
serverUrl: '',
// Security
enablePinning: false,
certificatePath: './certs/xtremepush.cer',
// iOS
devTeam: 'ABCD1234EF',
apsEnvironment: 'production',
};Alternativa: Configuração em package.json
{
"name": "your-app",
"xtremepush": {
"applicationKey": "YOUR_XTREMEPUSH_APP_KEY",
"googleSenderId": "YOUR_FCM_SENDER_ID",
"enableDebugLogs": true
}
}Referência da API JavaScript
Importação do Módulo
import { NativeModules } from 'react-native';
const Xtremepush = NativeModules.Xtremepush;Identificação do Usuário
Identifique usuários entre sessões e dispositivos:
// Set user by email or custom ID
Xtremepush.setUser('[email protected]');
// Set external ID for cross-platform identification
Xtremepush.setExternalId('your_user_id_123');Melhores Práticas: Ligue
setUser()após o login do usuário e limpe o acesso ao sair do logout.
Rastreamento de Eventos
Acompanhe as ações e comportamentos dos usuários:
// Track a custom event
Xtremepush.hitEvent('purchase_completed');
// Add a tag to user profile
Xtremepush.hitTag('premium_user');
// Add a tag with a value
Xtremepush.hitTagWithValue('plan_type', 'enterprise');
Xtremepush.hitTagWithValue('signup_date', '2025-01-15');Notificações Push
// Request notification permissions (required for Android 13+)
Xtremepush.requestNotificationPermissions();
// Get notification that opened the app
Xtremepush.getInitialNotification().then(notification => {
if (notification) {
console.log('Notification payload:', notification);
// Navigate based on notification data
}
});Centro de Mensagens (Caixa de Entrada)
// Open the Xtremepush message inbox
Xtremepush.openInbox();Exemplo completo
import React, { useEffect, useState } from 'react';
import { View, Button, Text, NativeModules } from 'react-native';
const Xtremepush = NativeModules.Xtremepush;
export default function App() {
const [userId, setUserId] = useState(null);
useEffect(() => {
// Request permissions on app start
Xtremepush.requestNotificationPermissions();
// Handle notification that opened the app
Xtremepush.getInitialNotification().then(notification => {
if (notification) {
console.log('Opened via notification:', notification);
}
});
}, []);
const handleLogin = (email) => {
// After successful login
Xtremepush.setUser(email);
Xtremepush.hitEvent('user_login');
setUserId(email);
};
const handlePurchase = (productId, amount) => {
Xtremepush.hitEvent('purchase');
Xtremepush.hitTagWithValue('last_purchase_amount', amount.toString());
Xtremepush.hitTag('has_purchased');
};
const handleSubscribe = (planType) => {
Xtremepush.hitTag('subscriber');
Xtremepush.hitTagWithValue('subscription_plan', planType);
};
return (
<View style={{ flex: 1, justifyContent: 'center', padding: 20 }}>
<Button
title="Login"
onPress={() => handleLogin('[email protected]')}
/>
<Button
title="Track Purchase"
onPress={() => handlePurchase('prod_123', 99.99)}
/>
<Button
title="Subscribe to Pro"
onPress={() => handleSubscribe('pro')}
/>
<Button
title="Open Inbox"
onPress={() => Xtremepush.openInbox()}
/>
</View>
);
}Recursos Avançados
Notificações de Mídia Enriquecida (iOS)
Exiba imagens, vídeos e botões interativos nas notificações:
Ativar na configuração:
module.exports = { enableRichMedia: true, devTeam: 'YOUR_APPLE_TEAM_ID', };Integração de reprodução:
npx xtremepush-setup iosNo Xcode, verifique se o alvo XtremePushNotificationServiceExtension existe
Adicionar a capacidade de Notificações Push ao alvo da extensão
Mídia rica exige que o
devTeamseja definido para que a Extensão de Serviço seja criada.
Serviços de Localização e Geofencing
Permitir a segmentação baseada em localização:
module.exports = {
enableLocationServices: true, // Basic location
enableGeo: true, // Geofencing
enableBeacons: true, // iBeacon proximity
};Permissões adicionadas automaticamente:
Android:
ACCESS_FINE_LOCATION,ACCESS_COARSE_LOCATION,ACCESS_BACKGROUND_LOCATIONiOS: Descrições de uso de localização no Info.plist
Fixação de Certificado SSL
Para maior segurança em ambientes corporativos:
module.exports = {
enablePinning: true,
certificatePath: './certs/xtremepush.cer',
};Entre em contato com o suporte do Xtremepush para obter o arquivo de certificado correto.
Referência de Comando CLI
Comando | Descrição |
|---|---|
| Execute integração total (Android + iOS) |
| Apenas integração com Android |
| Apenas integração com iOS |
| Verifique o status da integração |
| Gerar modelo de configuração |
Opções de Comando
Opção | Descrição |
|---|---|
| Caminho de arquivo de configuração personalizado |
| Pular a integração com Android |
| Pular a integração com iOS |
| Pré-visualizar alterações sem aplicar |
| Pular prompts de confirmação |
Exemplos
# Preview what will change
npx xtremepush-setup init --dry-run
# Use custom config file
npx xtremepush-setup init --config ./config/prod.config.js
# Android only, no prompts
npx xtremepush-setup android --yes
# iOS only with verbose verification
npx xtremepush-setup ios && npx xtremepush-setup verify --verboseSolução de problemas
Notificações Não Recebidas
Verifique o registro do dispositivo: Ative
enableDebugLogs: truee procure o registro de token de dispositivoVerificar credenciais push: Garantir que os certificados/chaves estejam configurados no painel Xtremepush
Teste a partir do painel: Envie uma notificação de teste das Campanhas → do Xtremepush
Verifique as configurações do dispositivo: Certifique-se de que as notificações estejam ativadas para o seu app
Verificação de Integração Falhada
Realize uma verificação detalhada:
npx xtremepush-setup verify --verboseVerificações manuais:
# Android - Check SDK initialization
grep -r "XtremePush" android/app/src/main/java/
# iOS - Check SDK initialization
grep -r "XtremePush" ios/*/AppDelegate.*Modo Depuração
Ative a saída de CLI prolixa:
DEBUG=1 npx xtremepush-setup initObtendo Apoio
Se os problemas persistirem:
Corrida:
npx xtremepush-setup verify --verboseFacilitar:
enableDebugLogs: trueEntre em contato com o suporte da Xtremepush com:
Saída de verificação
Logs de dispositivos/simuladores
Configuração (chaves sensíveis a redigir)
O que é Modificado
Arquivos Android
Arquivo | Emendas |
|---|---|
| Repositório Xtremepush Maven |
| Caminho de classe dos Serviços do Google |
| Dependências de SDK, plugins |
| Permissões (localização se ativadas) |
| Captura de carga útil de notificação |
| Inicialização do SDK |
Arquivos iOS
Arquivo | Emendas |
|---|---|
| Pods Xtremepush |
| Modos de fundo, descrições de uso |
| APS-Environment, grupos de aplicativos |
| Inicialização do SDK |
Versões do SDK
Componente | Versão |
|---|---|
Xtremepush Android SDK | 9.6.0 |
Xtremepush iOS SDK | Últimas (CocoaPods) |
Mensagens Firebase | 25.0.0 |
Local dos Serviços de Jogo | 21.3.0 |
Suporte ao Idioma
A CLI detecta e gera automaticamente código para:
Plataforma | Linguagens suportadas |
|---|---|
Android | Java, Kotlin |
iOS | Swift, Objective-C |