Implementação
O código de manipulação dos eventos de **PushNotification** deverá ser incluído dentro da função **onDeviceReady**. De forma geral, dois eventos serão tratados:
registration
– registro do dispositivo no provedor GCM (Google) ou APNS (Apple).notification
– apresentação da notificação quando esta for recebida pelo dispositivo.
var app = {
onDeviceReady: function () {
... // sua implementação
},
};
app.initialize();
**1.** Inicialização das propriedades de sua aplicação, onde:
app_token
– é o código do seu app obtido na plataforma da Inngage.senderID
– é o identificador do seu projeto no Google Developers Console.icon
– é o nome do ícone disponibilizado no diretório drawables do Android.
var app_token = "50a8affe879ee54b1fe67d2638672a4f";
var server = "https://api.inngage.com.br/v1";
var jsonData = "";
var push = PushNotification.init({
"android": {
"senderID": "123456789",
"icon": "icon",
"iconColor": "white"
},
"ios": {
"alert": "true",
"badge": "true",
"sound": "true"
},
"windows": {}
});
**2.** Registro do dispositivo nos provedores (GCM ou APNS) para o recebimento de push notification.
push.on('registration', function(data) {
navigator.geolocation.getCurrentPosition(function success(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
jsonData = JSON.stringify({
"registerGeolocationRequest": {
"app_token": app_token,
"uuid": device.uuid,
"lat": latitude,
"lon": longitude
}
});
console.log("Sending location data to server: " + jsonData);
$.post(server + "/geolocation/", jsonData)
.done(function(response) {
console.log("Server response: " + JSON.stringify(response));
})
.fail(function() {
console.log("A communication error occurred while sending data to the server (1401).");
});
}, function error(error) {
console.log("An error occurred while obtaining the user location (1402).");
});
cordova.getAppVersion(function(version) {
jsonData = JSON.stringify({
"registerSubscriberRequest": {
"identifier": device.uuid,
"registration": data.registrationId,
"platform": device.platform.toLowerCase(),
"sdk": 3,
"app_token": app_token,
"device_model": device.model,
"device_manufacturer": device.manufacturer,
"os_language": navigator.language,
"os_version": device.cordova,
"app_version": version,
"uuid": device.uuid
}
});
console.log("Sending data to server: " + jsonData);
$.post(server + "/subscription/", jsonData)
.done(function(response) {
console.log("Server response: " + JSON.stringify(response));
})
.fail(function() {
console.log("A communication error occurred while sending data to the server (1403).");
});
});
});
**3.** Manipulação do evento de recebimento de Pushes. Toda vez que uma nova notificação for recebida, este evento será disparado.
push.on('notification', function (data) {
console.log("Notification received :" + JSON.stringify(data));
jsonData = JSON.stringify({
"notificationRequest": {
"id": data.additionalData.id,
"app_token": app_token
}
});
console.log("Sending callback to server: " + jsonData);
$.post(server + "/notification/", jsonData)
.done(function (response) {
console.log("Server response: " + JSON.stringify(response));
})
.fail(function () {
console.log("A communication error occurred while sending data to the server (1404).");
});
navigator.notification.alert(
data.body,
function () {},
data.title,
"Ok"
);
});
Recebendo Dados Adicionais
Para receber dados adicionais enviados através da API de envio de mensagens, você deverá utilizar o objeto inngage_data[0].nome_variavel. Veremos abaixo um exemplo de utilização dos dados adicionais recebidos na mensagem.
Dados adicionais (additional_data) enviados na mensagem:
{
"sendPushRequest": {
"title": "Meu App",
"message": "Mensagem Urgente",
"app_token": "e605c02ac034dc676465d13e5663d1c41",
"identifier": "49556274634",
"additional_data": {
"acao": "adesao_fatura_email"
}
}
}
A seguinte mensagem será recebida pelo dispositivo:
{
"title": "Meu App",
"message": "Mensagem Urgente",
"additionalData": {
"id": "133945",
"inngage_data": [{
"acao": "adesao_fatura_email"
}],
"google.message_id": "0:1487196990535718%7a9e9be3f9fd7ecd",
"coldstart": false,
"collapse_key": "do_not_collapse",
"foreground": true
}
}
Para recuperar o objeto acao neste exemplo:
data.additionalData.inngage_data[0].acao
Updated about 1 year ago