Guia de integração básica do SDK Expo
Esta seção contém informações sobre como integrar o SDK Expo da Pushwoosh em seu aplicativo.
Pré-requisitos
Anchor link toPara integrar o SDK Expo da Pushwoosh em seu aplicativo, você precisará do seguinte:
Passos de integração
Anchor link to1. Instale o plugin
Anchor link toInstale o plugin Pushwoosh Expo usando a CLI do Expo
expo install pushwoosh-expo-pluginInstale o SDK Pushwoosh React Native
npm install pushwoosh-react-native-plugin --save2. Defina as propriedades do plugin
Anchor link toAdicione o plugin no início do array de plugins com as propriedades necessárias:
{ "expo": { "plugins": [ [ "pushwoosh-expo-plugin", { "mode": "development", "ios": { "PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__" }, "android": { "apiToken": "__YOUR_DEVICE_API_TOKEN__" } } ] ] }}Onde:
modeé usado para configurar o entitlement do ambiente APNs. Os valores “Development” ou “production” estão disponíveis.PW_API_TOKEN,apiTokené o seu Token da API de Dispositivo Pushwoosh.
3. Inicialize o Pushwoosh
Anchor link toNo componente raiz do seu aplicativo:
- Importe o plugin
pushwoosh-react-native-plugin. - Inicialize o SDK Pushwoosh.
- Chame
register()em sua lógica de inicialização para se registrar para notificações push.
import Pushwoosh from 'pushwoosh-react-native-plugin';
Pushwoosh.init({ "pw_appid": "__YOUR_APP_ID__" , "project_number": "__YOUR_FCM_SENDER_ID__"});
Pushwoosh.register();Onde:
__YOUR_APP_ID__é o código do aplicativo do Painel de Controle Pushwoosh.__YOUR_FCM_SENDER_ID__é o número do projeto Firebase do Console do Firebase.
4. Configuração Nativa do Android
Anchor link toAdicione o arquivo de configuração do Firebase:
- Copie seu arquivo
google-services.jsonpara o diretório raiz do projeto. - Defina a propriedade
googleServicesFilepara o caminho do seugoogle-services.jsone especifique a propriedadepackage:
"expo": { "name": "sample", "android": { "package": "com.pushwoosh.sample", "googleServicesFile": "./google-services.json" }, "plugins": [ [ "pushwoosh-expo-plugin", { "mode": "development", "ios": { "PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__" }, "android": { "apiToken": "__YOUR_DEVICE_API_TOKEN__" } } ] ]}5. Configuração Nativa do iOS
Anchor link toDefina a propriedade bundleIdentifier para o objeto ios:
"expo": { "name": "sample", "ios": { "bundleIdentifier": "com.pushwoosh.sample" }, "plugins": [ [ "pushwoosh-expo-plugin", { "mode": "development", "ios": { "PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__" }, "android": { "apiToken": "__YOUR_DEVICE_API_TOKEN__" } } ] ]}6. Pré-compile o aplicativo
Anchor link toGere o código nativo e configure as dependências para cada plataforma executando o prebuild:
npx expo prebuild7. Execute o projeto
Anchor link to- Compile e execute o projeto:
npx expo run:androidnpx expo run:ios- Vá para o Painel de Controle Pushwoosh e envie uma notificação push.
- Você deve ver a notificação no aplicativo.
Integração estendida
Anchor link toNesta fase, você já integrou o SDK e pode enviar e receber notificações push. Agora, vamos explorar a funcionalidade principal.
Listeners de eventos de notificação push
Anchor link toNo SDK Pushwoosh, existem dois listeners de eventos, projetados para lidar com notificações push:
- O evento
onPushReceivedé acionado quando uma notificação push é recebida - O evento
onPushAcceptedé acionado quando um usuário abre uma notificação
Você deve configurar esses listeners de eventos logo após a inicialização do SDK no início do aplicativo:
import { DeviceEventEmitter } from 'react-native';import Pushwoosh from 'pushwoosh-react-native-plugin';
class PushwooshNotificationHandler { setupPushListeners(): void {
DeviceEventEmitter.addListener("pushReceived", (e) => { console.warn("Push received: " + JSON.stringify(e)); });
DeviceEventEmitter.addListener("pushOpened", (e) => { console.warn("Push opened:" + JSON.stringify(e)); });
}}Configuração do usuário
Anchor link toAo focar no comportamento e nas preferências individuais do usuário, você pode entregar conteúdo personalizado, levando a um aumento da satisfação e lealdade do usuário.
import Pushwoosh from 'pushwoosh-react-native-plugin';
class Registration { afterUserLogin(user: User): void {
// Define o ID do usuário Pushwoosh.setUserId(user.getId());
// Define o e-mail do usuário Pushwoosh.setEmails(user.getEmailList());
// Define informações adicionais do usuário como tags para o Pushwoosh Pushwoosh.setTags({ "age": user.getAge(), "name": user.getName(), "last_login": user.getLastLoginDate() }); }}Tags
Anchor link toTags são pares de chave-valor atribuídos a usuários ou dispositivos, permitindo a segmentação com base em atributos como preferências ou comportamento, possibilitando o envio de mensagens direcionadas.
import Pushwoosh from 'pushwoosh-react-native-plugin';
class UpdateUser { afterUserUpdateProfile(user: User): void {
// Define a lista de categorias favoritas Pushwoosh.setTags({ "favorite_categories": user.getFavoriteCategoriesList() });
// Define as informações de pagamento Pushwoosh.setTags({ "is_subscribed": user.isSubscribed(), "payment_status": user.getPaymentStatus(), "billing_address": user.getBillingAddress() }); }}Eventos
Anchor link toEventos são ações ou ocorrências específicas do usuário dentro do aplicativo que podem ser rastreadas para analisar o comportamento e acionar mensagens ou ações correspondentes.
import Pushwoosh from 'pushwoosh-react-native-plugin';
class Registration {
// Rastreia o evento de login afterUserLogin(user: User): void { Pushwoosh.postEvent("login", { "name": user.getName(), "last_login": user.getLastLoginDate() }); }
// Rastreia o evento de compra afterUserPurchase(product: Product): void { Pushwoosh.postEvent("purchase", { "product_id": product.getId(), "product_name": product.getName(), "price": product.getPrice(), "quantity": product.getQuantity() }); }}Rastreamento de entrega de mensagens para iOS
Anchor link toVocê deve adicionar um alvo de Extensão de Serviço de Notificação ao seu projeto. Isso é essencial para o rastreamento preciso da entrega e para recursos como Rich Media no iOS.
Siga os passos do guia nativo para adicionar o alvo da extensão e o código Pushwoosh necessário dentro dele.
Propriedades adicionais do plugin
Anchor link to| Propriedade | Padrão | Descrição |
|---|---|---|
| Propriedades do iOS | ||
Pushwoosh_LOG_LEVEL | INFO | Nível de log para iOS. Valores possíveis: NONE, ERROR, WARN, INFO, DEBUG, NOISE |
| Propriedades do Android | ||
logLevel | INFO | Nível de log para Android. Um de: NONE, ERROR, WARN, INFO, DEBUG, NOISE |
multiNotificationMode | true | Pode ser alterado para false caso você queira exibir apenas a última notificação para o usuário |
icon | - | Caminho para um ícone de notificação personalizado para Android |
Solução de problemas
Anchor link toSe você encontrar algum problema durante o processo de integração, consulte a seção de suporte e comunidade.
Erro de registro do FCM: Falha ao recuperar o token. O Firebase está configurado corretamente?
Anchor link toCertifique-se de que sua propriedade googleServicesFile do Firebase esteja configurada no arquivo de configuração do Expo e que o arquivo google-services.json seja adicionado ao diretório raiz do seu projeto:
"expo": { "name": "sample", "android": { "package": "com.pushwoosh.sample", "googleServicesFile": "./google-services.json" }, "plugins": [ [ "pushwoosh-expo-plugin", { "mode": "development", "ios": { "PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__" }, "android": { "apiToken": "__YOUR_DEVICE_API_TOKEN__" } } ] ]}TypeError: Cannot read property ‘init’ of null
Anchor link toVocê pode encontrar o erro ao tentar executar o aplicativo em um dispositivo.
Para resolver o problema, certifique-se de ter concluído a etapa de prebuild. Ela gera o código nativo e configura as dependências para cada plataforma.
npx expo prebuild