0
votes

I have a Cordova app, using the push plugin.
On the server I am sending the GCM messages with node-gcm.
I receive notifications just fine, for iOS and Android, and they open the app when clicked, however on Android the 'notification' event does not fire.

push.on('notification', function(data) {
    console.log(data);
    alert('got PUSH!');
});

If the app is running in the foreground then I get the 'got PUSH!' alert, but when the app is in the background and I click the push notification when it arrives, it opens the app but does not alert 'got PUSH!'.

How can I get the 'notification' event to fire after the app opens?


Here is the gcm Message I am sending to the device:

{
  "params": {
    "notification": {
      "title": "SO post demo",
      "body": "THIS IS A TEST!",
      "icon": "ic_launcher",
      "sound": true
    }
  }
}

I believe that I need to have something in the notification payload to solve this, but nothing I have tried gets that event to fire when the app opens from the background.


Here are a couple of things that I have tried:

Using "content-available" (as suggested here), using message.addData:

{
  "params": {
    "notification": {
      "title": "SO post demo",
      "body": "THIS IS A TEST!",
      "icon": "ic_launcher",
      "sound": true
    },
    "data": {
      "info": "super secret info",
      "content-available": "1"
    }
  }
}

Same again, but putting my params in the json I use to make the Message:

{
  "params": {
    "notification": {
      "title": "SO post demo",
      "body": "THIS IS A TEST!",
      "icon": "ic_launcher",
      "sound": true,
      "info": "super secret info",
      "content-available": "1"
    }
  }
}
1

1 Answers

0
votes

In methodically creating this question I found the answer.
I needed my payload to look like this:

{
  "params": {
    "data": {
      "title": "SO post demo",
      "body": "THIS IS A TEST!",
      "icon": "ic_launcher",
      "sound": true
    }
  }
}

This messes up the notification icon that displays (it is a zoomed in version) but, at this stage, I can live with that.