Search code examples
pushapigee

Apigee push notification - one


Apigee's push notification is documented here. http://apigee.com/docs/api-baas/content/introducing-push-notifications

I tried this with the js sdk that Apigee provides here http://apigee.com/docs/app-services/content/installing-apigee-sdk-javascript. It looks like only the client can generate a notification to itself? enter image description here

But I have a scenario where I would like to push notifications to multiple clients from a nodejs job that runs once every hour. Something like this, but from the nodejs sdk not from the js sdk.

var devicePath = "devices;ql=*/notifications";

How do I do this?


Solution

  • As remus points out above, you can do this with the usergrid module (https://www.npmjs.com/package/usergrid).

    You are basically trying to construct an API call that looks like this (sending a message by referencing a device):

    https://api.usergrid.com/myorg/myapp/devices/deviceUUID/notifications?access_token= access_token_goes_here '{"payloads":{"androidDev":"Hello World!!"}}'

    Or like this (sending a message by referencing a user who is connected to a device) https://api.usergrid.com/myorg/myapp/users/fred/notifications?access_token=access_token_goes_here '{"payloads":{"androidDev":"Hello World!!"}}'

    You can do this with code that looks something like this:

    var options = {
        method:'POST',
        endpoint:'devices/deviceUUID/notifications',
        body:{ 'payloads':{'androidDev':'Hello World!!'} }
    };
    client.request(options, function (err, data) {
        if (err) {
            //error - POST failed
        } else {
            //data will contain raw results from API call
            //success - POST worked
        }
    });
    

    or

    var options = {
        method:'POST',
        endpoint:'users/fred/notifications',
        body:{ 'payloads':{'androidDev':'Hello World!!'} }
    };
    client.request(options, function (err, data) {
        if (err) {
            //error - POST failed
        } else {
            //data will contain raw results from API call
            //success - POST worked
        }
    });
    

    Note: the second call, that posts to the users/username/notifications endpoint assumes that you have already made a connection between the user and their device (e.g. POST /users/fred/devices/deviceUUID).