Skip to content
This repository has been archived by the owner on May 5, 2023. It is now read-only.

Service Bus Notification Hubs

Eli Geller edited this page Jul 6, 2018 · 31 revisions

This feature will enable developers to send push notifications from their node.js applications simultaneously to hundreds of thousands or mobile clients across IOS and Windows 8. Each message has a tag associated with it. When clients subscribe, they can choose which tags are of interest. Each message published is associated with a tag. Notification Hubs will ensure all messages are broadcasted to subscribers of that tag.

Types of messages

  • Template: Template messages are a collection of key/value pairs which are agnostic to a specific push mechanism and which notification hubs will send to all platforms.
  • Targeted: Targeted messages target a specific platform / push mechanism.

Windows notification template references

Sample snippets

Below is a quick snippet for how to use the new api. In the snippet below a new Notification Hub is created, configuring credentials for both apns and wns. Two messages are then sent with different tags to both IOS and Windows 8 devices.

var azure = require('azure');

var credentials = {
  wns: {packageSid:"...", clientSecret:"..."},
  apns: {keyData:"...", certData:"...") }
};

var hub='myhub';

//conn is either a service level or entity level connection string
//hub is the hub to use for the app
var nhs = azure.createNotificationHubService(conn);

//to create a new hub
nhs.createNotificationHub(hub, credentials, function(err, response){..});

//send using wns wit a payload object
nhs.wns.sendTileSquarePeekImageAndText01(
    hub,
    tag,
    {
        image1src: 'http://foobar.com/dog.jpg',
        image1alt: 'A dog',
        text1: 'This is a dog',
        text2: 'The dog is nice',
        text3: 'The dog bites',
        text4: 'Beware of dog'
    },
    function (error, result) {
        currentAccessToken = error ? error.newAccessToken : result.newAccessToken;
    });

//send using wns with flat params in order based on the definition as defined in the wns schema docs.

nhs.wns.sendTileSquarePeekImageAndText01(hub, tag, 'http://foobar.com/dog.jpg', 'A dog', 'This is a dog', 'The dog is nice', 'The dog bites', 'Beware of dog', 
  function(error, result) {
      currentAccessToken = error ? error.newAccessToken : result.newAccessToken;
  }
);

// send using apns
var msg = nhs.apns.createPayload();
msg.alert = "You got your emails";
msg.badge = 9;
msg.sound = 'bingbong.aiff';

nhs.apns.send(hub,'tag2', apnsPayload, function(err, response) {...});

//send using a template
var msg = {}
msg.foo = "foo"
msg.bar = "bar";

nh.send(hub, "tag3", msg, function(err, response) {...});

API

createNotificationHubService

azure.createNotificationHubService(conn)

returns NotificationHubService

  • conn - connection string

NotificationHubService

methods

createNotificationHub(name, credentials) 
  • name - hub name
  • credentials - A hash containing wns and apns properties with the credentials.
send(hub, tag, xmlString, headers, callback) 
  • hub - hub to send message on
  • tag - tag for the payload
  • xmlString - xml payload for the message
  • headers - wns headers
  • callback - callback with err and response

WnsPush

ctor

WnsPush(pushCredentials)

methods

send(hub, tag, payload, headers, callback) 
  • hub - hub to send message on
  • tag - tag for the payload
  • payload - xml string payload for the message
  • headers - wns headers
  • callback - callback with err and response

sendXYZ convenience methods

Additional convenience methods will be provided for each Toast/Tile type

  • sendTileSquareBlock
  • sendTileSquareText01
  • sendTileSquareText02
  • sendTileSquareText03
  • sendTileSquareText04
  • sendTileWideText01
  • sendTileWideText02
  • sendTileWideText03
  • sendTileWideText04
  • sendTileWideText05
  • sendTileWideText06
  • sendTileWideText07
  • sendTileWideText08
  • sendTileWideText09
  • sendTileWideText10
  • sendTileWideText11
  • sendTileSquareImage
  • sendTileSquarePeekImageAndText01
  • sendTileSquarePeekImageAndText02
  • sendTileSquarePeekImageAndText03
  • sendTileSquarePeekImageAndText04
  • sendTileWideImage
  • sendTileWideImageCollection
  • sendTileWideImageAndText01
  • sendTileWideImageAndText02
  • sendTileWideBlockAndText01
  • sendTileWideBlockAndText02
  • sendTileWideSmallImageAndText01
  • sendTileWideSmallImageAndText02
  • sendTileWideSmallImageAndText03
  • sendTileWideSmallImageAndText04
  • sendTileWideSmallImageAndText05
  • sendTileWidePeekImageCollection01
  • sendTileWidePeekImageCollection02
  • sendTileWidePeekImageCollection03
  • sendTileWidePeekImageCollection04
  • sendTileWidePeekImageCollection05
  • sendTileWidePeekImageCollection06
  • sendTileWidePeekImageAndText01
  • sendTileWidePeekImageAndText02
  • sendTileWidePeekImage01
  • sendTileWidePeekImage02
  • sendTileWidePeekImage03
  • sendTileWidePeekImage04
  • sendTileWidePeekImage05
  • sendTileWidePeekImage06
  • sendToastText01
  • sendToastText02
  • sendToastText03
  • sendToastText04
  • sendToastImageAndText01
  • sendToastImageAndText02
  • sendToastImageAndText03
  • sendToastImageAndText04
  • sendBadge

Each of the methods that send tile and toast notifications have two altenative parameter signatures:

sendXYZ(hub, tag, payload, [options], [callback])
sendXYZ(hub, tag, channel, string1, string2, ..., [options], [callback])

For the string param versions all parameters must be passed in the proper order per the binding schemas specified below:

For badge, the syntax is fixed.

sendBadge(channel, value, [options], [callback])

The value can be either a simple string or number, in which case it can assume values specified here, or it can be an object with 2 properties: