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