/
Delivering push notifications to Delivering push notifications to

Delivering push notifications to - PowerPoint Presentation

tawny-fly
tawny-fly . @tawny-fly
Follow
347 views
Uploaded On 2018-12-05

Delivering push notifications to - PPT Presentation

millions of mobile devices Elio Damaggio Program Manager II 3515 Notification Hubs makes it easy to push multiplatform personalized notifications both to single users and very large groups ID: 735651

app notification notifications hub notification app hub notifications demo device register hubs platform tags push devices tag store windows

Share:

Link:

Embed:

Download Presentation from below link

Download Presentation The PPT/PDF document "Delivering push notifications to" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1
Slide2

Delivering push notifications to millions of mobile devices

Elio

Damaggio

Program Manager II

3-515Slide3

Notification Hubs makes it easy to push multi-platform, personalized notifications both to single users

and very large groups.Slide4

Outline

Push notifications 101.

Why Notification Hubs.

Getting started demo.

Using tags.

Mediaapp

demo.

Securing tag registrations.

Notifyuser

demo.

Using templates.

Personalized notifications demo.

Other information.Slide5

Why Notification Hubs?

Push is essential to the user experience of many apps.

Increase user engagement.

Update tiles/widgets with current financial/weather information.

Display badges with the number of current sales leads in a CRM app.

Real world apps have complex needs.

Multi-platform push.Localization.User preferences.Different client app versions.Scale.

Windows News app uses

Notification HubsSlide6

Push notifications

Push notifications require a platform specific

service.

Each platform (Windows Store,

iOS

, Android, …)

has a different push notification service.Different capabilities and protocols.An e2e solution requires lots of back-end code.Store and keep up to date the device information.Implement platform-specific protocols.Slide7

Push notification lifecycle

Registration at app launch.

Client app contacts Platform Notification Service,

to retrieve current channel (e.g.,

ChannelURIs

,

device tokens, registrationIds).App updates handle in back-end.Sending Notification.App back-end send notification to PNS.PNS pushes the notification to the app on the device.

Maintenance.Delete expired handles when PNS rejects them.

Platform

Notification

Service

App back-end

Client appSlide8

Challenges of push notifications

Platform dependency

Different communication protocols to PNS’ (e.g., HTTP vs. TCP, xml payload vs. JSON payload).

Different presentation formats and capabilities (tiles vs. toasts vs. badges).

Routing

PNS’ provide a way to send a message to a device/channel.

Usually notifications are targeted at users or interest groups(e.g., employees assigned to a customer account).App back-end has to maintain a registry associating device handles to interest groups/users.ScaleApp back-end has to store current handles for each device  high storage and VM costs.

Broadcast to millions of devices with low latency requires parallelization (DB ad VM).Slide9

Using Notification Hubs

One-time set up

Create a Notification Hub in Service Bus.

Register

The client app retrieves its current handle

from the PNS.

Client app creates (or updates) a registration on the Notification Hub with the current handle.Send NotificationThe app back-end sends a message to the Notification Hub.Notification Hub pushes it to the PNS’.

APNs

WNS

Notification

Hub

App back-end

iOS app

Windows Store

appSlide10

Advantages of using Notification Hubs

No platform-specific protocols.

App back-end just communicates with the Notification Hub.

Avoid storing device information in the app back-end.

Notification Hub maintains the registry of devices and the

associations to users/interest groups.

BroadcastPush notifications to millions of devices (across platforms) with a single call.Slide11

Demo

Getting started with Notification HubsSlide12

Register a Windows Store app

var

hub

=

new

NotificationHub(“<hub name>", "<connection string>");

var channel = await

PushNotificationChannelManager

.CreatePushNotificationChannelForApplicationAsync();

await

hub.RegisterNativeAsync

(channel.Uri

);Slide13

Broadcast a Windows notification

var

hubClient

=

NotificationHubClient

.CreateClientFromConnectionString("<connection string>", “<hub name>");

var toast =

@“<notification payload>"

;

hubClient.SendWindowsNativeNotificationAsync

(toast

);Slide14

Register an iOS app

(

void

)application:(

UIApplication

*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *) deviceToken { …

SBNotificationHub* hub = [[

SBNotificationHub

alloc

]

initWithConnectionString

:

@"<connection string>" notificationHubPath:

@"mynh"]; [hub registerNativeWithDeviceToken:deviceToken tags:nil completion:^(NSError* error) { if (error != nil) { NSLog(@"Error registering for notifications: %@", error); } }];}Slide15

In your main activity:

Notification

Hub

hub

=

new

NotificationHub("<hub name>", "<connection string>", context);GoogleCloudMessaging gcm

= GoogleCloudMessaging.getInstance(context);String

regid

=

gcm.register

(

SENDER_ID

);

NativeRegistration r = hub.register(

regid);Register an Android appSlide16

Broadcast iOS and Android notifications

var

hubClient

=

NotificationHubClient

.CreateClientFromConnectionString("<connection string>", “<hub name>");

var

toastForIos

=

@“<notification payload>"

;

hubClient.SendAppleNativeNotificationAsync

(

toastForIos);var toastForAndroid = @“<notification payload>";hubClient.SendGcmNativeNotificationAsync(toastForAndroid);Slide17

var azure = require('azure');

var

notificationHubService

=

azure.createNotificationHubService

('hubname', 'connectionString');notificationHubService.wns.sendToastText01(null

, {

text1:

'Hello from Node and Mobile Services!'

},

function

(error)

{ if (!error) { // message sent successfully } }); From node/mobile servicesSlide18

Take-aways

No need to store and maintain

ChannelURIs

.

In your device local storage, in the cloud.

Device registrations expire.

No need to clean-up when app is uninstalled.Call RegisterAsync regularly.Slide19

Outline

Push notifications 101.

Why Notification Hubs.

Getting started demo.

Using tags.

Mediaapp

demo.Securing tag registrations.Notifyuser demo.Using templates.Personalized notifications demo.Other information.Slide20

Sending notifications to specific devices

Tags as interest groups.

Client app can register with a set of tags.

Tags are simple strings (no pre-provisioning is required).

App back-end can target all clients with the same tag.

You can use tags also for:

Multiple type of interest groups, e.g.,:Follow bands: tag “followband:Beatles”.Follow users: tag “followuser:Alice”.Tag devices with a user ID.

Notification

Hub

App back-end

Tag:”Beatles

Tag:”Wailers

Tag:”Beatles

”Slide21

Demo

MediaAppSlide22

Take-aways

Store the categories/tags.

In your device local storage, in the cloud.

Make sure to register regularly.

Rule of thumb: “every app start, up to once per day.”Slide23

Outline

Push notifications 101.

Why Notification Hubs.

Getting started demo.

Using tags.

Mediaapp

demo.Securing tag registrations.Notifyuser demo.Using templates.Personalized notifications demo.Other information.Slide24

Tags as user IDs

Registering from device is not secure.

Every device can register for any tag.

Embedding credentials in the device works

for “public” notifications (e.g., News apps).

Register from back-end.

Device does *not* contain the notification hub credentials.Devices authenticate with the app back-end to register.App back-end registers the device for the correct tags.Same registration patterns apply.Devices have to register regularly (registrations still expire).Store the required tags in your back-end.

Notification

Hub

App back-endSlide25

Demo

NotifyUserSlide26

Register from the back-end (.NET)

//

POST

api

/register

p

ublic async

void

Post(

bool

instId

,

bool

channelUri, bool userId) { // We assume a windows store app (if coding a multiplatform app, a ‘platform‘ parameter should be passed) … if (!authorizedToRegisterTag(userId)) { throw new Exception("User not authorized to register"); }

var

regsForInstId =

await hubClient.GetRegistrationsByTag

(instId,

100);

bool updated = false; bool firstRegistration = true; foreach (var registrationDescription in regsForInstId) { if (firstRegistration) { var winReg = registrationDescription as WindowsRegistrationDescription; winReg.ChannelUri = new Uri(channelUri); winReg.Tags.Clear(); winReg.Tags.UnionWith(new string[] {instId, userId}); hubClient.UpdateRegistration(winReg); updated = true;

firstRegistration

=

false

; }

else

{

// if templates are not used, delete

all extra registrations with

this

installation id.

hubClient.DeleteRegistration

(

registrationDescription

);

}

}

// if not updated, a new registration has to be created for the device if (!updated) { hubClient.CreateWindowsNativeRegistration(channelUri, new string[] {instId, userId}); }}Slide27

Take-aways

When security is needed

 register from the back-end

No Notification Hub SDK required on the devicesSlide28

Outline

Push notifications 101.

Why Notification Hubs.

Getting started demo.

Using tags.

Mediaapp

demo.Securing tag registrations.Notifyuser demo.Using templates.Personalized notifications demo.Other information.Slide29

Using templates for multi-platform push

Registration.

Client apps can register with a platform specific template, e.g.,

Alice’s Surface registers with

Windows Store ToastText01 template.

Bob’s iPhone with the Apple JSON template:

{ aps: {alert: “$(message)”}}.Send notification.App back-end sends a platform independent message: {message: “Hello!”}.Version independence.Templates can be used to abstract different client app versions.

Service Bus

Notification Hub

App back-end

<toast

>

<

visual

>

<binding template

=\"ToastText01

\">

<

text id=\"1

\">

$(message)

</

text

>

</

binding

>

</

visual

>

</

toast>

{

aps

:

{

alert

: “$(message

)”

}

}

{ message: “Hello!” }

Hello!

Hello

!Slide30

Using templates for personalization

Registration.

Client apps can register with personalized templates, e.g.,

Alice’s Surface wants to receive weather information in F degrees.

Bob’s iPhone wants weather information in C degrees.

Send notification.

App back-end sends a message including both temperatures: {tempC: “23”, tempF: “73”}.Template Expressions.Template support a simple expression language:E.g., {‘Elio

, ’+$(friend)+’ added you to ’+$(groupName)+‘ group’}.

Service Bus

Notification Hub

App back-end

<toast

>

<

visual

>

<binding template

=\"ToastText01

\">

<

text id=\"1

\">

$(

tempF

)

</

text

>

</

binding

>

</

visual

>

</

toast>

{

aps

:

{

alert

:

“$(

tempC

)”

}}{tempC: “23”, tempF: “73”

}

73

23Slide31

Demo

Personalized weather appSlide32

Templates take-aways

Platform agnostic code in the back-end.

Abstract client app version differences from the back-end.

Powerful personalization with no back-end complexity.

E.g., localized messages, C/F temperatures.Slide33

Outline

Push notifications 101.

Why Notification Hubs.

Getting started demo.

Using tags.

Mediaapp

demo.Securing tag registrations.Notifyuser demo.Using templates.Personalized notifications demo.Other information.Slide34

Delivery guarantee and telemetry

Notification Hubs do not provide delivery guarantee.

All platform notification systems are “best effort”, e.g., device could be

disconnected, could never reconnect, etc.

Guideline: important communications have to be delivered in-app.

Telemetry.

Notification Hubs provide powerful telemetry to track each and every outcome of the notifications for each platform (e.g., successful notifications, throttled notifications, expired channels/tokens).Accessible through Windows Azure portal and programmatically.Slide35

Scale

Notification Hubs run on a fully parallelized architecture.

All our VMs are ready for your broadcast!

A single Notification Hub scales up to millions of devices,

with no special coding required.

Number of devices and latency.

During preview Notification Hubs are limited to 10,000 active devices.At launch, Notification Hubs will support millions of devices out of the box.The expected latency of a broadcast to all registered devices is a couple of minutes, even for millions of devices. Slide36

Platform support, pricing & launch date

Platform support.

At launch, we will support push notifications through

WNS, APNs, GCM, and MPNS.

Device SDKs for Windows Store Apps, Windows Phone 8,

iOS

(Objective-C), Android.Server SDKs for .NET, Node, Mobile Services.All functions available from REST.Launch date.“Summer 2013” in all data centers, i.e., very soon!Slide37

Resources

Documentation

Notification Hubs Guidance

Windows Store (

tutorial

,

feature guide)iOS (tutorial, feature guide)Android (tutorial, feature guide)

SDKs

.NET Server SDK

Node Server SDK

Windows Store Device SDK

iOS Device SDK

Android Device SDKSlide38

Evaluate this session

Scan this QR code

to evaluate this session and be automatically entered in a

drawing

to

win

a

prize!

Required Slide

*delete this box when your slide is finalized

Your MS Tag will be inserted here during the final scrub. Slide39