Azure notification hubs

27
Prabath Fonseka (MVP) CTO Occulem Microsoft Azure Notification Hub Dinusha Kumarasiri (MVP) Software Architect Occulem

Transcript of Azure notification hubs

Page 1: Azure notification hubs

Prabath Fonseka (MVP)CTOOcculem

Microsoft Azure Notification Hub

Dinusha Kumarasiri (MVP)Software ArchitectOcculem

Page 2: Azure notification hubs

Agenda• Notifications in multiple platforms• Push notifications• Notification hubs• Sample App• Tags• Templates

Page 3: Azure notification hubs

Notifications in multiple platforms

Page 4: Azure notification hubs

Notifications in multiple platforms• Windows WNS• Toast• Tile• Badge• Raw

• Windows Phone (MPNS)• Toast• Tile• Raw

• Apple• Google• Amazon

Page 5: Azure notification hubs

Push Notifications

Reservation changes, Deals, Back-officeTravel/Hospitality/Airlines

SMS replacement, Deals, Back-officeBanking/Insurance

Orders, Product UX,Back-officeDiscrete manufacturing/Auto

Prescriptions, Appointments,LOB (maintenance)Healthcare

Breaking newsNews/Media

Offers, Orders, Back-officeRetail

Use Cases

Page 6: Azure notification hubs

Push Notifications• Client app contacts Platform Notification

Service, to retrieve current channel (for example: ChannelURIs, device tokens, registrationIds)

• App updates handle in back-end

Registration at app launch

• App back-end send notification to PNS• PNS pushes the notification to the app on

the deviceSending

Notification

• Delete expired handles when PNS rejects themMaintenance

PlatformNotification

Service

App back-end

Push notification lifecycle

Page 7: Azure notification hubs

Push NotificationsBenefits

For enterprise appsKeep users up to date

Not only for alerts‘push to sync’ notifications

For consumer appsRicher than SMSConsiderably cheaper

Page 8: Azure notification hubs

Push NotificationsLimitations

• Different communication protocols to PNS• Different presentation formats and capabilities

Platform dependency

• Provide a way to send a message to a device/channel • Target user or group of interest • Back-end has to maintain an identification repository

Routing

• Need to store current handles for each device• Broadcast to millions of devices with low latency

Scale

Page 9: Azure notification hubs

Notification Hubs

Notification Hub

MPNS

Apple

GCM

Your

application

Page 10: Azure notification hubs

Notification HubsMessage DistributionPush notification to millions of devices across supported platforms with single call

Collect information from devices (e.g. location)

Message TemplatingConvert message in to appropriate format

• XML or JSONUse for localizationTemplates can be used to present certain information according to user preferences

Device RegistrationMaintains a registry of devices and users/groups

Message TargetingTargets specific users and groups based on tags Allows you to target messages to specific users

Page 11: Azure notification hubs

Notification HubsBing (news, finance, sports, …) Past event sample – Sochi 2014

Preinstalled on Windows

Millions of devices

Millions of notifications/day

Minutes to delivery

Interest groups(countries, disciplines, athletes)

Localized notifications

Million devices(iOS, Android, WP)

Million notifications

10s

3+ <2

100s

3+ 150+

Page 12: Azure notification hubs

Notification HubsLifecycle

APNsWNS

Notification Hub

App back-end

iOS app Windows app

MPNS

GCM

ADM

Page 13: Azure notification hubs

Notification HubsBenefits

X-plat: from any back-end

to any mobile

platform

No need to store device

information in the

app back-end

Routing and

interest groups

Personalization and

localization

Broadcast at

scale, multicast, unicast

Telemetry

Page 14: Azure notification hubs

Notification Hubs – Sample AppWindows 10 to Send/Receive Notifications

Step 4• I

n Visual Studio, add WindowsAzure.Messaging.Managed nuget package. Develop your app.

Page 15: Azure notification hubs

Notification Hubs – Sample App1. Register your device at application startup

Page 16: Azure notification hubs

Notification Hubs – Sample App2. Send a notification from your back-end:

Page 17: Azure notification hubs

Notification Hubs – Sample AppCode Snippets

Register Send

Windows / Windows Phoneawait hub.RegisterNativeAsync(channel.Uri);

iOS[hub registerNativeWithDeviceToken:deviceToken

tags:nilcompletion:^(NSError* error)

{ … }];Android / Kindlehub.register(regid);

.NETvar toast = @"<notification payload>";hub.SendWindowsNativeNotificationAsync(toast);

Node / Mobile ServiceshubService.wns.sendToastText01(null, { text1: 'Hello from Node!' }, function (error) { … });

Page 18: Azure notification hubs

Notification Hubs – Sample AppPayload Snippets

Windows / Windows Phone<toast><visual><binding template="ToastText01"><text id="1">Hello from a .NET App!</text></binding></visual></toast>

iOS{"aps":{"alert":"Hello from .NET!"}}

Android{"data":{"message":"Hello from .NET!"}}

Page 19: Azure notification hubs

Notification Hubs – Sample AppExample : Payload for windows 10

• Adaptive and interactive toast notification• New Features like

o Actionso Input (Text, Dropdown)o Sounds

Page 20: Azure notification hubs

Notification Hubs – Sample AppExample : Payload for windows 10

Notification Payload for a Windows 10 device (generic template)<toast launch="1"><visual><binding template="ToastGeneric"><image id="1" src="Assets\Square30x30Logo.png" alt=""/><text id="1">Dear Bill Gates Get 40% if you come visit us today ! Best Regards from our team.</text></binding></visual><actions> <action activationType="foreground" content="Yes I will !" arguments="details"/> <action activationType="background" content="No thanks." arguments="later"/> </actions></toast>

Page 21: Azure notification hubs

Notification Hubs – TagsTags 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 tagYou can use tags also for:• Multiple type of interest groups, for

example: • Follow bands: tag “followband:Beatles”• Follow users: tag “followuser:Alice”

• Tag devices with a user ID • Tags can be user preferences or system

information

Notification Hub

App back-end

Tag:”Beatles”Tag:”Wailers”

Tag:”Beatles”

Page 22: Azure notification hubs

Notification Hubs – TagsRegister

Windows / Windows Phoneawait hub.RegisterNativeAsync(channel.Uri, new string[] {"myTag", "myOtherTag"});

iOS[hub registerNativeWithDeviceToken:deviceToken tags:@[@"myTag", @"myOtherTag"] completion:

^(NSError* error) {…

}];

Android / Kindlehub.register(regid, "myTag“, "myOtherTag");

Page 23: Azure notification hubs

Notification Hubs – TagsSend

Example:SendNotificationAsync(parameters, “(A && !B) || C”);

•“All my group except me”group:id && !user:idSocial

•Touchdown event is send to everybody following either teamFollowteam:A || Followteam:B || followplayer:1 || followplayer:2 …Events

•Send notifications at specific times. E.g. Tag with timezone, @12pm in Seattle send:timezone:PST && follows:thaifood

Hours

•Send a reminder to update to your first Android app version:version:1.0 && platform:AndroidVersions & platforms

Page 24: Azure notification hubs

Notification Hubs – TemplatesTemplates for multi-platform pushRegistration• Client apps can register with a platform

specific template, for example: • Windows tablet registers with Windows Store

ToastText01 template• iPhone with the Apple JSON template: { aps:

{ alert: “$(message)” } }Send notification• App back-end sends a platform independent

message: {message: “Hello!”}Notes• Multiple templates can be specified for each

device• Each template can have a different set of tags

Notification HubApp back-

end

<toast><visual>

<binding template=\"ToastText01\">

<text id=\"1\">$(message)</text>

</binding>

</visual></toast>

{aps: {

alert: “$(message)”

}}

{message:

“Hello!”}

Hello!

Hello!

Page 25: Azure notification hubs

Notification Hubs – TemplatesTemplates for localizationRegistration• Client apps can register with personalized

templates, for example: • Windows tablet wants to receive news in English • iPhone wants Italian

Send notification• App back-end sends a message including both

languages: {news_en: “Hello!”, news_it: “Ciao!”}

Template Expressions• Templates support a simple expression language:• For example: {‘Elio, ’+$(friend)+’ added you to

’+$(groupName)}

Notification HubApp back-

end

<toast><visual>

<binding template=\"ToastText01\">

<text id=\"1\">$(news_en)</text>

</binding>

</visual></toast>

{aps: {

alert: “$(news_it)”

}}

{news_en:

“Hello!”,news_it:

“Ciao!”}

Hello!

Ciao!

Page 26: Azure notification hubs

Q & A

Page 27: Azure notification hubs

Thank You

Visit azure.microsoft.com for updated content and news