---
title: "PhoneGap"
slug: "phonegap"
updated: 2026-06-12T10:30:57Z
published: 2026-06-12T10:30:57Z
canonical: "docs.xtremepush.com/phonegap"
---
> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xtremepush.com/llms.txt
> Use this file to discover all available pages before exploring further.
# PhoneGap
Adicionar Xtremepush tanto aos apps iOS quanto Android construídos com Cordova, PhoneGap ou Ionic
O Xtremepush suporta notificações push para dispositivos iOS via o Push Notification Service (APNs) da Apple e para dispositivos Android pelo serviço FCM (Firebase Cloud Messaging for Android) do Google. Esta página contém instruções específicas do PhoneGap, mas você precisará conectar seu app iOS e Android à plataforma separadamente.
> [!TIP]
> Para integrar com sucesso, você precisará ter sua chave de aplicativo xtremepush, certificados APNS para iOS e ID do Remetente e Chave de Servidor do Firebase para Android. Esses são usados para conectar seu app à plataforma e aos serviços push da Apple e Google. Você encontrará links para a documentação sobre como se conectar à plataforma abaixo:
>
> - [Configuração do FCM para Android](/documentation/docs/pt-br/android-push-notifications)
> - [Configurando Certificados APNs para iOS](/documentation/docs/pt-br/ios-push-notifications)
## Android
Depois de recuperar o `google-services.json` arquivo do seu app no FCM, você deve adicioná-lo ao `platforms/android/app` diretório.
.png?sv=2026-02-06&spr=https&st=2026-11-04T08%3A57%3A02Z&se=2026-11-04T09%3A57%3A02Z&sr=c&sp=r&sig=kLLTtiSfRhtmctrTt1b8WxSZRDg%2FmnaRSn2vx%2F5STM0%3D)
Guias completos de integração Cordova estão disponíveis abaixo para iOS e Android.
## Instalando o plugin Xtremepush
1. Em um terminal, navegue até o diretório do seu projeto
2. A partir de um terminal, navegue até o diretório do seu aplicativo e adicione o plugin com o seguinte comando:
```powershell
cordova plugin add https://github.com/xtremepush/XtremePush-Phonegap
```
3. Agora edite seu `index.js` arquivo para registrar no servidor Xtremepush em um `deviceready` evento, tomando cuidado para trocar `APP_KEY` e `FCM_PROJECT_NUMBER` para os valores reais. Um `orientationchange` ouvinte também pode ser adicionado para permitir a rotação das mensagens dentro do app, como visto abaixo:
```Addinganorientationchangelistener
var app = {
// Application Constructor
initialize: function() {
this.bindEvents();
},
// Bind Event Listeners
//
// Bind any events that are required on startup. Common events are:
// 'load', 'deviceready', 'offline', and 'online'.
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
window.addEventListener('orientationchange', doOnOrientationChange);
},
// deviceready Event Handler
//
// The scope of 'this' is the event. In order to call the 'receivedEvent'
// function, we must explicitly call 'app.receivedEvent(...);'
onDeviceReady: function() {
registerXtremePush();
}
};
function registerXtremePush(){
var androidXpushKey = "YOUR_ANDROID_APPKEY";
var iosXpushKey = "YOUR_IOS_APPKEY";
var xpAppkey = "";
if (window.cordova.platformId == "android"){
xpAppkey = androidXpushKey;
} else{
xpAppkey = iosXpushKey;
}
XtremePush.register({
appKey: xpAppkey,
debugLogsEnabled: true,
inappMessagingEnabled: true,
ios: {
pushPermissionsRequest: true,
//if using locations
locationsEnabled: true,
beaconsEnabled: true,
locationsPermissionsRequest: true,
},
android: {
gcmProjectNumber: "GCM_PROJECT_NUMBER",
//if using locations
geoEnabled: true,
beaconsEnabled: true
}
});
}
function doOnOrientationChange() {
XtremePush.onConfigChanged();
}
app.initialize();
```
Você precisará adicionar `NSBluetoothPeripheralUsageDescription` ao seu `config.xml` arquivo na seção iOS. É uma descrição de uso obrigatória que você precisa adicionar ao seu app se ele incluir CoreBluetooth (mesmo que o core bluetooth não seja usado ativamente). O SDK Xtremepush para iOS atualmente exige que você faça isso. Veja a documentação aqui para mais informações.
Nota: Se você estiver usando localizações, precisará adicionar o seguinte ao seu `config.xml` arquivo na seção iOS:
```xml
We use Location services to send you relevant information, when and where you need itWe use Location services to send you relevant information, when and where you need itWe use Location services to send you relevant information, when and where you need itWe use Bluetooth services to send you relevant information, when and where you need it
```
Essas são as mensagens que mostram ao usuário quando ele recebe o prompt para conceder permissão de localização e bluetooth. No exemplo acima, adicionamos um texto provisório, mas isso pode ser alterado para algo mais relevante que permita explicar por que está pedindo aos seus usuários que concedam acesso à localização.
Neste ponto, sua integração básica com o Xtremepush está completa. Se você construir seu projeto agora, o app deve se registrar na plataforma Xtremepush e você deve conseguir começar a enviar campanhas para seu dispositivo.
> [!TIP]
> Certifique-se de definir o ID do usuário
>
> Recomenda-se que, nesta fase, você use nosso método SDK para definir IDs de usuário, seguindo nosso [guia dedicado](/documentation/docs/pt-br/set-user-id) para garantir que os dispositivos possam ser associados e direcionados em suas campanhas por seu próprio identificador único.
## Exemplo
Se você tiver alguma dificuldade em configurar a implementação, um aplicativo de exemplo pode ser construído usando os seguintes dois arquivos como ponto de partida:
### index.html
```xml
Hello World
Apache Cordova
```
### index.js
```javascript
var app = {
// Application Constructor
initialize: function() {
this.bindEvents();
},
// Bind Event Listeners
//
// Bind any events that are required on startup. Common events are:
// 'load', 'deviceready', 'offline', and 'online'.
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
window.addEventListener('orientationchange', doOnOrientationChange);
},
// deviceready Event Handler
//
// The scope of 'this' is the event. In order to call the 'receivedEvent'
// function, we must explicitly call 'app.receivedEvent(...);'
onDeviceReady: function() {
registerXtremePush();
}
};
function registerXtremePush() {
XtremePush.register({
appKey:"AppKey",
impressionsBatchingEnabled:true,
inappMessagingEnabled:true,
tagsBatchingEnabled:true,
inboxEnabled:true,
messageResponseCallback : "onMessageResponse",
inboxBadgeCallback: "onInboxBadgeUpdate",
deeplinkCallback : "onDeeplinkReceived",
ios:{
locationsEnabled:true,
locationsPermissionsRequest:true,
pushPermissionsRequest:true
},
android:
{
gcmProjectNumber:"SenderID",
geoEnabled:true,
beaconsEnabled:true,
locationsPermissionsRequest: true
}
});
}
function doOnOrientationChange() {
XtremePush.onConfigChanged();
}
function onMessageResponse(data) {
console.log("Message Response " + JSON.stringify(data));
}
function onInboxBadgeUpdate(data){
console.log("Inbox badge update " + data);
}
function onDeeplinkReceived(data){
console.log("Deeplink Received " + data);
}
function deviceInfo() {
XtremePush.deviceInfo(function(data){
console.log(data);
});
}
app.initialize();
```
Uma lista completa das nossas funções JavaScript e seus parâmetros pode ser encontrada no arquivo [xtremepush.js plugin](https://github.com/xtremepush/XtremePush-Phonegap/blob/master/www/xtremepush.js) .
## Opções adicionais
### Marcagem, eventos e casos especiais
A marcação e os eventos podem então ser implementados no seu app da seguinte forma:
Botão de exemplo mostrando como atingir um evento (para acionar campanhas):
```xml
```
Botão de exemplo mostrando como acessar uma tag (para fins de análise/segmentação):
```xml
```
Existem casos especiais em que você pode querer enviar valores, como string ou mapas, com um evento de acerto. Para isso, você pode usar esta estrutura:
Botão de exemplo mostrando como chamar `hitEventWithValue` (Valor pode ser uma String ou um Mapa)
```xml
```
E no arquivo JS:
```javascript
function hitEventWithValue() {
//var stringOrMap = {0: "number0", 1: "number1"};
//var stringOrMap = "numbers";
XtremePush.hitEventWithValue('eventName', stringOrMap);
}
```
### Funções de retorno de chamada
`messageResponseCallback`, `deeplinkCallback` e `inboxBadgeCallback` as opções permitem vincular funções JavaScript, definidas nos arquivos JavaScript do seu projeto, ao Xtremepush SDK. Essas funções serão então chamadas pelo SDK quando eventos específicos acontecerem. Depois que suas funções forem criadas, você pode configurá-las com a `XtremePush.register()` função, usando cada uma das seguintes configurações opcionais:
```javascript
messageResponseCallback : "onMessageResponse",
inboxBadgeCallback: "inboxBadgeCallbackFunction",
deeplinkCallback : "onDeeplinkReceived",
```
Eles são chamados para serem executados em casos especiais, conforme explicado abaixo:
#### mensagemRespostaChamada de Retorno
Uma implementação básica é mostrada abaixo.
```javascript
function onMessageResponse(data) {
let jo = JSON.parse(JSON.stringify(data));
console.log(JSON.stringify(jo));
if (jo.response.type == = "present") {
} else if (jo.response.type == = "click") {
} else if (jo.response.type == = "dismiss") {
}
}
```
A `response.type` variável mostrada acima pode ser presente, clique ou descarte.
- Presente: quando uma notificação push é recebida e o aplicativo está em primeiro plano
- Clique: quando uma mensagem é clicada
- Dispensar: quando uma mensagem é descartada
Abaixo está um exemplo completo de tratamento personalizado de notificações. Ele faz várias coisas:
- Mostra um diálogo personalizado quando uma mensagem push é recebida em primeiro plano
- Abre uma página de artigo quando uma mensagem é clicada
- Salva as informações quando um dos botões da mensagem é clicado
```javascript
function onMessageResponse(data) {
let jo = JSON.parse(JSON.stringify(data));
// When app is received in the foreground show an alert
if (jo.response.type == = "present") {
console.log(JSON.stringify(jo));
openArticle(jo.message.data.articleId);
//when the user clicks on a message
} else if (jo.response.type == = "click") {
//default click action
if (!jo.response.hasOwnProperty('action')) {
openArticle(jo.message.data.articleId);
//action for specific button click
} else {
if (jo.response.action == = "like") {
likeArticle(jo.message.data.articleId);
} else if (jo.response.action == = "share") {
shareArticle(jo.message.data.articleId);
}
}
//show alert if dismiss button click
} else if (jo.response.type == = "dismiss") {
alert("message dismiss");
}
}
```
#### inboxBadgeCallback
Isso acontece quando o número do crachá é atualizado. O número do distintivo é verificado quando:
- Nova mensagem push chega
- A inscrição está iniciada
- A janela da caixa de entrada está fechada
Um exemplo é mostrado abaixo:
```javascript
function onInboxBadgeUpdate(data){
alert ('Inbox badge update ' + data);
}
```
#### deeplinkCallback
Isso acontece quando uma mensagem com a ação **de clique Ir para o deeplink** é clicada. Veja nosso [guia para links profundos](/documentation/docs/pt-br/mobile-deeplinks) e mais informações.
Um exemplo é mostrado abaixo:
```javascript
function onDeeplinkReceived(data){
alert("deeplink Received "+data);
}
```
#### Manuseio de Notificações em Primeiro Plano
É importante definir o comportamento correto para a situação quando uma notificação push é recebida em primeiro plano. Você não quer interromper o fluxo de trabalho do usuário, mas ainda assim pode querer entregar informações importantes ao usuário. O comportamento padrão tanto no iOS quanto no Android é mostrar uma notificação no estilo do sistema operacional, mas isso pode ser alterado adicionando o payload com a chave 'em primeiro plano' e o valor 'false' à sua campanha.
.png?sv=2026-02-06&spr=https&st=2026-11-04T08%3A57%3A02Z&se=2026-11-04T09%3A57%3A02Z&sr=c&sp=r&sig=kLLTtiSfRhtmctrTt1b8WxSZRDg%2FmnaRSn2vx%2F5STM0%3D)
Agora, quando o pedido é recebido, caso o aplicativo esteja em primeiro plano, a notificação não será exibida.
## Opções avançadas
### Atribuições
Se você quiser que o Xtremepush colete dados IDFA/Android ID e atribuição no seu app, temos um branch de repositório do plugin que copia os frameworks necessários para o seu app. Isso pode ser instalado usando o seguinte comando:
```powershell
cordova plugin add https://github.com/xtremepush/XtremePush-Phonegap#master+attributions
```
Para habilitar a funcionalidade de coleção, o `attributionsEnabled` parâmetro na `XtremePush.register()` função também deve ser definido com um valor de `true`.
### Remover serviços de localização
Se você quiser remover os frameworks e serviços de geolocalização e beacon do seu app, por favor, use o seguinte comando ao instalar o plugin:
```Removinglocationservices
cordova plugin add https://github.com/xtremepush/XtremePush-Phonegap#master-geo-beacon
```
### Caixa de entrada
O recurso da caixa de entrada pode ser ativado no seu app adicionando o seguinte ao seu `XtremePush.register()` funcionamento:
```javascript
inboxEnabled: true
```
Aqui está um botão de exemplo mostrando como abrir a caixa de entrada
```javascript
```
Se você quiser usar a funcionalidade do selo da caixa de entrada, por favor, utilize o seguinte na sua `XtremePush.register()` função:
```javascript
inboxBadgeCallback: "onInboxBadgeUpdate"
```
Aqui está um botão de exemplo mostrando como recuperar o número de distintivo mais recente:
```javascript
```