Upload
alice-reeves
View
230
Download
0
Tags:
Embed Size (px)
Citation preview
Push to ALL the iPhones with AzureChris RisnerSenior Technical Evangelist@chrisrisner Microsoft Azure
2
About me
Technical Evangelist @chrisrisner
Chrisrisner.com Live in Washington
Grew up in MichiganMobile dev for 5+
years
Push Notifications are BIG
Provide updates to
users
Alert users when app isn’t
running
Trigger background
sync
Pull users back into your apps!
•Emails•Game updates•Flight reminder•Rental car reminder•Appointments•Video chat requests•Data usage alerts•Bills due
Push Notifications I Receive
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
Scale• App 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)
Push Notification Lifecycle1. App registers with provider2. App gets token3. App sends token to backend4. Push requested5. Backend delivers push to provider6. Provider pushes to device
7
PlatformNotification
Service
App back-end
Microsoft Azure
Backend-as-a-Service
~consume
BaaSPlatform-as-a-Service
build
PaaSInfrastructure-as-a-
Service
host
IaaSSoftware-as-a-Service
consume
SaaS
•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
•Part of Azure Service Bus•Three levels of scale• Free (1 million)• Basic• Standard
•Millions of push notifications in minutes
Highly Scalable
•Notification Hubs deals with• Storing device registration information• Signing push requests and sending to PNS• Dealing with invalid push ID registrations• Handling templates and tags
• You just need to• Configure your hub and app• Register with the PNS• Pass along the push ID
Managed
1. App registers with provider2. App gets token3. App sends token to Hub4. Push requested5. Hub delivers push to provider6. Provider pushes to device• Hub handles expired tokens
Using Notification Hubs
APNsWNS
Notification Hub
App back-end
iOS app Windows app
MPNS
GCM
ADM
•Clients register with set of tags•Tags are strings tied to the Push ID•Requests to push to a Tag will push to connected Push IDs•“Interest based push”
Tags
• Logic based tag pushed• Social: “All of this group but me”• Group:id && !user:id
•Version and platform• Version:1.0 && platform:iOS
• Events: “Anyone interested in the game”• FollowTeam:SeaHawks || FollowTeam:Broncos || EventInterest:SuperBowl
Tag Expressions
1. Client requests location2. Client uses reverse geocoding service to get zip
(etc)3. Client registers with Hubs using zip as a tag4. Server pushes to zip code5. All clients in that zip code receive notification
Making GeoPush Work
•Clients can specify templates when registering•Templates specify format of payload when specific push is sent• If “Message” push is sent, send it in this format { alert : “$info” }
•Enables app backend to send platform independent messages• i.e. push to all the devices with this tag
•Multiple templates per device•Different tags per template
Templates
•Client app talks directly with Notification Hub•Sends over the wire• Push ID (Channel URI, Registration ID, Token)• Tags• Templates•Notification Hub Listen Connection String
•Not completely secure
Registering from the Client
•Authenticate the request before registering• Is the user who they say they are?
•Can still specify tags and templates•Great for setting up registrations from a web app•Good for when an app update requires a user’s registrations being updated• i.e. manager adding an employee to a group
Registering from the Server
Registering from the Server
Notification HubApp back-
end
{id}
upsert({id}, channel, tags)
createId()
•Different support on different platforms•Windows / Windows Phone – Only Lock Screen Apps• iOS – only iOS 7 and up• Android / Kindle
•Useful in scenarios where push isn’t satisfactory• Too much data to fit in payload•Don’t want to send secure information through PNS
Push-to-Sync
35
Resources• Get a FREE Microsoft Azure Trial Account:
• http://azure.microsoft.com
• Check out Notification Hubs• http://aka.ms/NH
• SDK Source Code on GitHub• https://github.com/Azure/azure-notificationhubs
• Contact Details• http://chrisrisner.com• http://aka.ms/CommonWams• @chrisrisner• [email protected]
Microsoft Azure
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Fortune 500 using Azure
>57%
>250kActive websites
Greater than
1,000,000
SQL Databases in Azure>20 TRILLION
storageobjects
>300
MILLIONAD users
>13BILLIONauthentication/wk
>2 MILLION
requests/sec
>1 MILLION
Developers registered with Visual Studio Online