Top Banner
Sending Cross Platform Notifications using Azure Notifications Hub & Xamarin Anubhav Ranjan Consultant at Xamarin, Microsoft MVP @anubhavr05 Sukriti Sharma Technical Evangelist @suksharma
28

Cross Platform Mobile Push Notifications with Azure Notifications Hub

Jul 18, 2015

Download

Software

Sukriti Sharma
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Sending Cross Platform Notifications using Azure Notifications Hub & Xamarin

Anubhav Ranjan

Consultant at Xamarin, Microsoft MVP

@anubhavr05

Sukriti Sharma

Technical Evangelist

@suksharma

Page 2: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Agenda

• Push Notifications

• Notification Hub

• Tags: Send Targeted Notifications

• Templates

Page 3: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Push Notifications are BIG

Page 4: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Push notification lifecycleRegistration at app launch1. Client app to retrieve PNS Handle (e.g. Channel Uris,

device tokens, registration IDs)

2. Updates back-end

Sending Notification1. Back-end sends notification to PNS

2. PNS pushes the notification to the app on the device

Maintenance1. Delete expired handles when PNS rejects them

Platform

Notification

Service

App back-end

Page 5: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Challenges of push notifications

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

• Tiles vs toasts vs badges

• Maintaining ChannelURI/ RegistrationID/ Token provided by PNS

• Back-end complications (Storage) and Cost

• Scalability

Page 6: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Azure Notification Hubs (advantages)

• X-plat: from any back-end to any mobile platform

• No need to store device information in the app back-end (managed)

• Routing and interest groups

• Personalization and localization

• Broadcast at scale, multicast, unicast

• Telemetry

Page 7: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Using Notification HubsOne-time set up1. Create NH

Register (Client)1. Retrieve PNS Handle

2. Register with NH using PNS Handle

Send Notification1. Back-end sends message to NH

2. NH pushes it to the PNS’

*PNS – Platform Notification Service

*NH – Notifications Hub

APNs WNS

Notification Hub

App back-end

iOS app Windows app

MPNS

GCM

ADM

Page 8: Cross Platform Mobile Push Notifications with Azure Notifications Hub

•Client SDKs for• Android – GCM and ADM

• iOS – APNS

• Windows Phone – MPNS

• Windows Store – WNS

•Capable of pushing to specific platform or to all at once

• Server SDKs for• REST API

• .NET

• Node.JS

• Java

Cross-Platform Push

Page 9: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Some snippetsRegister Send

await

[hub registerNativeWithDeviceToken:deviceToken

tags:nilcompletion:^(NSError* error) {…}];

hub.register(regid);

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

hubService.wns.sendToastText01(null, {

text1: 'Hello from Node!'},function (error)

{…

});

Page 10: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Send Targeted Notifications

Page 11: Cross Platform Mobile Push Notifications with Azure Notifications Hub

TagsTags as interest groups1. Client app registers with tags

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

3. Back-end can target all clients with the same tag

You can use tags also for• Multiple type of interest groups, e.g.• Follow movie stars: tag “followactor:Rajnikant”

• Follow users: tag “followuser:SachinTendulkar”

• Tags can be user preferences or system information

Page 12: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Notification Hub

App back-end

Tag:”Rajnikant”Tag:”Salman”

Tag:”Rajnikant”

Tags: Example

Page 13: Cross Platform Mobile Push Notifications with Azure Notifications Hub

• Logic based tag pushed

• Social: “All of this group but me”

• Group:id && !user:id

• Events: “Anyone interested in the game”

• FollowTeam:RealMadrid || FollowTeam:Barcelona || EventInterest:LaLiga

• Time: “@12PM in India send”

• timezone:IST && follows:chinesefood

Tag Expressions

Page 14: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Some snippetsRegister

await new string[] {"myTag", "myOtherTag"}

[hub registerNativeWithDeviceToken:deviceToken tags:@[@"myTag", @"myOtherTag"] completion:^(NSError* error) {…

}];

hub.register(regid, "myTag“, "myOtherTag");

Page 15: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Demo: Get Started

- Portal Demo

- Google Console

- Configure your Notification Hub

- Connecting your app to the Notification Hub

- Send notifications from your back-end

- Register with Tags

Page 16: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Notification Templates

Page 17: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Using templates for multi-platform pushRegistration

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

• 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 Hub

App back-end

<toast><visual><binding template=\"ToastText01\"><text id=\"1\">$(message)</text>

</binding></visual>

</toast>

{aps: {

alert: “$(message)”

}}

{message: “Hello!”

}

Hello!

Hello!

Page 18: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Using templates for localizationRegistration

• Client apps can register with personalized templates, e.g. • 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!”}

Notification Hub

App 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 19: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Sending geo-targeted notifications with Windows Azure Notification Hubs

Some examples are:

• Send coupons to all my customers in Mumbai

• Send notifications of new mortgage rates/open houses in a specific locality

• Notify people in a town/city about a concert they might be interested in

• Notify people in a town/city of a charity/recycling event

Page 20: Cross Platform Mobile Push Notifications with Azure Notifications Hub

“How do I read tags from my hub?”• Notification Hubs is not a storage system

• No cleanup needed, expires registrations automatically

• In the device• Every platform provides apps a way to store user information locally or in the

cloud

• E.g. Roaming settings, iCloud

• In your app back-end• Usually stored by user id

• Try not to replicate device information

• Register methods always overwrite tags• Each time you update the channel, overwrite all the tags

Page 21: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Managing devices from your back-end

When to register from your app back-end• To secure Tags

• App back-end can authenticate the user before registering the device

• When back-end has to modify tags• Adding a tag from the web app

• Manager adding an employee to a work group

• Tags are derived from analytics or other user data

Page 22: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Registering from the back-end

Identify your device1. Cannot use ChannelURIs/device tokens/…

2. Keep long-living NH registration ids in device storage

Register1. First time only,

a) Request registration id from hub, and

b) Store it on device storage

2. CreateOrUpdate device registration (@ every app start)

3. Back-end can verify and/or add tags (e.g. performing auth)

Notification HubApp back-end

{id}

upsert({id}, channel, tags)

createId()

Managing devices from your back-end

Page 23: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Back-end driven tag updates

Use a tag to identify user1. Back-end usually refers to users and not devices

2. Register devices with a tag like ‘userid:{id}’

Back-end updates tags1. Retrieve device registration(s) by userid

2. Update tags

Note1. No device information in app back-end

2. Back-end only refers to users

Notification HubApp back-end

getByTag(userid)

update(tags)

Managing devices from your back-end

Page 24: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Advanced scenarios: “Push to Sync”, Retargeting

Page 25: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Push to Sync

Updates app state1. Does not show a message to the user

Example: music app1. User changes playlist on desktop

2. Back-end sends a ‘push-to-sync’ notifications to user’s devices

3. Phone receives push and starts downloading new song

4. User finds the new song already on their phone!

Platform-dependentWindows/Windows Phone (only lock-screen apps)

iOS (only since iOS 7)

Android/Kindle

App back-endNotification Hub

Push to sync

Add new song

Page 26: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Pulling it all together - Retargeting

Send a targeted coupon1. Use tags for user preferences, location, system properties,

timezone, …

2. Target with tag expressions

Push UX & feedback1. Use Rich push & push to sync to provide best UX

2. Contextually report to your app back-end(who tapped, who visited the page, who received it)

Retarget1. (perform analysis on user data)

2. Update tags from your back-end with the new information

3. Send alternative offer to users that did not participate

App back-endNotification Hub

Loc:SF && Food

Update tags

Loc:SF && Food

&& !tapped

CRM/DMP

system

Page 27: Cross Platform Mobile Push Notifications with Azure Notifications Hub

Follow us online

Facebookfacebook.com/MicrosoftDeveloper.India

twitter.com/msdevindia

Twitter

@anubhavr05

@suksharma

Page 28: Cross Platform Mobile Push Notifications with Azure Notifications Hub