diff --git a/node-gcm/node-gcm-tests.ts b/node-gcm/node-gcm-tests.ts new file mode 100644 index 000000000..b184949ed --- /dev/null +++ b/node-gcm/node-gcm-tests.ts @@ -0,0 +1,72 @@ +/// + +import gcm = require('node-gcm'); + +// Create a message +// ... with default values +var message = new gcm.Message(); + +// ... or some given values +var message = new gcm.Message({ + collapseKey: 'demo', + delayWhileIdle: true, + timeToLive: 3, + data: { + key1: 'message1', + key2: 'message2' + } +}); + +// Change the message data +// ... as key-value +message.addData('key1','message1'); +message.addData('key2','message2'); + +// ... or as a data object (overwrites previous data object) +message.addData({ + key1: 'message1', + key2: 'message2' +}); + +// Change the message variables +message.collapseKey = 'demo'; +message.delayWhileIdle = true; +message.timeToLive = 3; +message.dryRun = true; + +// Set up the sender with you API key +var sender = new gcm.Sender('insert Google Server API Key here'); + +// Add the registration IDs of the devices you want to send to +var registrationIds: string[] = []; +registrationIds.push('regId1'); +registrationIds.push('regId2'); + +// Send the message +// ... trying only once +sender.sendNoRetry(message, registrationIds, (err, result) => { + if (err) { + console.error(err); + } else { + console.log(result); + } +}); + +// ... or retrying +sender.send(message, registrationIds, (err, result) => { + if (err) { + console.error(err); + } else { + console.log(result); + } +}); + +// ... or retrying a specific number of times (10) +sender.send(message, registrationIds, 10, (err, result) => { + if (err) { + console.error(err); + } else { + console.log(result); + } +}); + diff --git a/node-gcm/node-gcm.d.ts b/node-gcm/node-gcm.d.ts new file mode 100644 index 000000000..3272acac4 --- /dev/null +++ b/node-gcm/node-gcm.d.ts @@ -0,0 +1,62 @@ +// Type definitions for node-gcm 0.9.15 +// Project: https://www.npmjs.org/package/node-gcm +// Definitions by: Hiroki Horiuchi +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +declare module "node-gcm" { + + export interface IMessageOptions { + collapseKey?: string; + delayWhileIdle?: boolean; + timeToLive?: number; + dryRun?: boolean; + } + + export class Message { + constructor(options?: IMessageOptions); + collapseKey: string; + delayWhileIdle: boolean; + timeToLive: number; + dryRun: boolean; + + addData(key: string, value: string): void; + addData(data: any): void; + } + + + export interface ISenderOptions { + proxy?: any; + maxSockets?: number; + timeout?: number; + } + export interface ISenderSendOptions { + retries?: number; + backoff?: number; + } + + export class Sender { + constructor(key: string, options?: ISenderOptions); + key: string; + options: ISenderOptions; + + send(message: Message, registrationIds: string|string[], callback: (err: any, resJson: IResponseBody) => void): void; + send(message: Message, registrationIds: string|string[], retries: number, callback: (err: any, resJson: IResponseBody) => void): void; + send(message: Message, registrationIds: string|string[], options: ISenderSendOptions, callback: (err: any, resJson: IResponseBody) => void): void; + sendNoRetry(message: Message, registrationIds: string|string[], callback: (err: any, resJson: IResponseBody) => void): void; + } + + + export interface IResponseBody { + success: number; + failure: number; + canonical_ids: number; + multicast_id?: number; + results?: { + message_id?: string; + registration_id?: string; + error?: string; + }[]; + } + +} +