Skip to content

push notification for apple push notification (APN) and google cloud messaging (GCM)

License

Notifications You must be signed in to change notification settings

idw111/push-notification

Repository files navigation

push-notification NPM version Build Status Coverage percentage

Installation

$ npm install --save push-notification

Usage

const PushNotification = require('push-notification');
const DeviceType = PushNotification.DeviceType;

const pn = PushNotification({
    apn: {
        cert: path.resolve('./cert/cert.pem'),
        key: path.resolve('./cert/key.pem'),
        production: false,
    },
    gcm: {
        apiKey: 'gcm-api-key'
    }
});

const data = {
    title: 'Title',
    message: 'Message',
    badge: '',
    sound: '',
    payload: {
        param1: 'additional data',
        param2: 'another data'
    }
};

pn.pushToAPN('ios-device-token', data); // push to single ios device
pn.pushToAPN(['token1', 'token2', 'token3'], data); // push to multiple ios devices

pn.push('device-token', data, DeviceType.IOS); // push to single ios device
pn.push(['token1', 'token2', 'token3'], data, DeviceType.IOS); // push to multiple ios devices

pn.pushToGCM('android-device-token', data); // push to single android device
pn.pushToGCM(['token1', 'token2', 'token3'], data); // push to multiple android devices

pn.push('device-token', data, DeviceType.ANDROID); // push to single android device
pn.push(['token1', 'token2', 'token3'], data, DeviceType.ANDROID); // push to multiple android devices

const devices = [
    { token: 'token1', type: DeviceType.IOS },
    { token: 'token2', type: DeviceType.ANDROID }
];

// send notification to all devices
Promise.all(devices.map(device => pn.push(device.token, data, device.type)));

// or this might be more performant 
const iosTokens = devices.filter(d => d.type === DeviceType.IOS).map(d => d.token);
const andTokens = devices.filter(d => d.type === DeviceType.ANDROID).map(d => d.token);
Promise.all([
    iosTokens.length ? pn.push(iosTokens, data, DeviceType.IOS) : Promise.resolve(),
    andTokens.length ? pn.push(andTokens, data, DeviceType.ANDROID) : Promise.resolve()
]);

push, pushToAPN, pushToGCM return Promise instance

pn.push(...).then(res => console.log(res)).catch(err => console.log(err));

Reference

PushNotification(options)

Arguments

options

  • apn
    • cert: path to cert.pem
    • key: path to key.pem
  • gcm
    • apiKey

pushToAPN(tokens, data)

Arguments

tokens

  • (string) a device token
  • (array) array of device tokens

data

  • title
  • message
  • badge
  • sound
  • (object) payload

Returns

Promise resolves push result

pushToGCM(tokens, data)

Arguments

tokens

  • (string) a device token
  • (array) array of device tokens

data

  • title
  • message
  • badge
  • sound
  • (object) payload

Returns

Promise resolves push result

push(tokens, data, type)

Arguments

tokens

  • (string) a device token
  • (array) array of device tokens

data

  • title
  • message
  • badge
  • sound
  • (object) payload

type

  • (DeviceType) DeviceType.IOS or DeviceType.ANDROID

Returns

Promise resolves push result

Configuring APN and GCM

APN

GCM

License

MIT © Dongwon Lim

About

push notification for apple push notification (APN) and google cloud messaging (GCM)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •