Delivering Millions of Push Notifications in Minutes

Post on 11-May-2015

791 views 2 download

Tags:

description

Presentation from TechDays Netherlands 2014 on using Azure Notification Hubs to deliver millions of push notifications - through a Mobile Services backend or through an arbitrary backend including Node.js or .NET console apps.

transcript

Laat ons weten wat u vindt van deze sessie! Vul de evaluatie in via www.techdaysapp.nl en maak kans op een van de 20 prijzen*. Prijswinnaars worden bekend gemaakt via Twitter (#TechDaysNL). Gebruik hiervoor de code op uw badge.

Let us know how you feel about this session! Give your feedback via www.techdaysapp.nl and possibly win one of the 20 prizes*. Winners will be announced via Twitter (#TechDaysNL). Use your personal code on your badge.

* Over de uitslag kan niet worden gecorrespondeerd, prijzen zijn voorbeelden – All results are final, prizes are examples

Delivering Millions of Push Notifications in MinutesSasha GoldshteinCTO, Sela GroupMicrosoft C# MVP, Azure MRS, Azure Insiderblog.sashag.net@goldshtn

Typical Push System Diagram

Platform Push Provider

Your Web Service

Database

App

Azure Mobile Services is a backend for your mobile apps

… that has a free tier… cloud scale… support for all mobile platforms

Mobile Services Push Architecture

Microsoft Azure

SQL DatabaseNode

+ Expres

s backen

d

Apple Push Notification

Service

Windows Notification

Service

Google Cloud Messaging

Microsoft Push

Notification Service

URI/Token

Device Type

ID

aabc 43df …

iOS 123456

https://live...

Windows 8 789123

56aaffbb…

Android 456789

Server scripts

Managed by you

Azure Notification Hubs

… abstract away platform push services… support targeted multi-tag delivery… scale to millions of users

… Mobile Services or any other backend

Notification Hub Push Architecture

Microsoft Azure

Node +

Express

backend

Apple Push Notification

Service

Windows Notification

Service

Google Cloud Messaging

Microsoft Push

Notification Service

Server scripts

Notification Hub Service

SQL Database

Tag URIs/Tokens

Templates

sports [ ab…, 5a…, …]

alert: …<toast…>data: …

news [ bc…, 5a…, …]

123456 [ 5a… ]

Not managed

by you

Options for Push Notifications

Registration Push

Through Mobile ServiceExplicit channel managementMobile Services push module

Directly from client to Notification Hub

Azure hub module from Mobile Service

Azure NuGet package from other backend

Through Mobile Service to Notification Hub

Registration Tags……are totally up to you!Examples:

user:123456 region:Europesports news

conversation:aa412group:Colleagues_65523

Per-Platform Registration fromMobile Servicehub.wns.createNativeRegistration( request.body.channelUri, [request.user.userId, “sports”], function (error, registration) { ... });hub.apns.createNativeRegistration( request.body.deviceToken, [request.user.userId, “sports”], function (error, registration) { ... });

Direct Registration fromWindows 8 Clientvar channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();

var hub = new NotificationHub(name, connString);await hub.RegisterNativeAsync(channel.Uri);

Push from Mobile Servicehub.wns.sendToastText02( [ ‘sports’, ‘news’ ], { text1: ‘Breaking news’, text2: ‘AFC Ajax defeats FC Twente 3-0’ }, function (error) { ... });

Push from Mobile Servicehub.apns.send ( [ ‘sports’, ‘news’ ], { badge: 1, alert: ‘AFC Ajax defeats FC Twente 3-0’ }, function (error) { ... });

Push from Other .NET Backendvar hub = NotificationHubClient. CreateClientFromConnectionString(connString, name);

var toast =@”...<text id=‘1’>”“AFC Ajax defeats FC Twente 3-0”“</text>...”;

await hub.SendWindowsNativeNotificationAsync(toast);

DemoNotification Hubs with .NET BackendNotification Hubs from Console App

Per-Platform Registrations Aren’t That Great

Separate registration API for each platformSeparate payload for each platform

But: More control over push customization

Template Registrationhub.wns.createToastText01Registration( request.body.channelUri, [ ‘sports’, request.user.userId ], { text1: ‘$(breakingnews)’ }, function (error, registration) { ... });hub.apns.createTemplateRegistration( request.body.deviceToken, [ ‘sports’, request.user.userId ], { aps: { alert: ‘$(breakingnews)’ } }, function (error, registration) { ... });

Registration

Template Channel URI / Device Token

Device Type

12345678… {“aps”:{“alert”:”$(breakingnews)”}} abcd 12f0 … iOS

45678901… {“data”:{“message”:”$(breakingnews)”}} 556a432f… Android

78901234… <?xml version="1.0" encoding="utf-8"?><wp:Notification xmlns:wp="WPNotification"><wp:Toast><wp:Text1>Breaking news</wp:Text1><wp:Text2>$(breakingnews)</wp:Text2></wp:Toast></wp:Notification>

https://live... Windows Phone

34567890… <toast><visual><binding template="ToastText02"><text id="1">Breaking news</text><text id="2">$(breakingnews)</text</visual></toast>

https://live... Windows 8

Template Pushhub.send( [ ‘sports’, ‘news’ ], { breakingnews: ‘AFC Ajax defeats FC Twente 3-0’ }, function (error, outcome) { ... });

DemoTemplate Registrations

Questions?Sasha Goldshteinblog.sashag.net@goldshtn

Laat ons weten wat u vindt van deze sessie! Vul de evaluatie in via www.techdaysapp.nl en maak kans op een van de 20 prijzen*. Prijswinnaars worden bekend gemaakt via Twitter (#TechDaysNL). Gebruik hiervoor de code op uw badge.

Let us know how you feel about this session! Give your feedback via www.techdaysapp.nl and possibly win one of the 20 prizes*. Winners will be announced via Twitter (#TechDaysNL). Use your personal code on your badge.

* Over de uitslag kan niet worden gecorrespondeerd, prijzen zijn voorbeelden – All results are final, prizes are examples