Push to ALL the iPhones with Azure Chris Risner Senior Technical Microsoft Azure
About me 2 Technical Chrisrisner.com Live in Washington Grew up in Michigan Mobile dev for 5+ years
Agenda 3 Push Notifications Microsoft Azure Azure Notification Hubs Tags Templates Questions
Push Notifications are BIG
s 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 Lifecycle 1.App registers with provider 2.App gets token 3.App sends token to backend 4.Push requested 5.Backend delivers push to provider 6.Provider pushes to device 7 Platform Notification Service App back-end
Microsoft Azure Backend-as-a-Service BaaS Platform-as-a-Service PaaS Infrastructure-as-a-Service IaaS Software-as-a-Service SaaS
Notification Hubs Cross-platform Push Notifications Highly scalable Managed
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 provider 2.App gets token 3.App sends token to Hub 4.Push requested 5.Hub delivers push to provider 6.Provider pushes to device Hub handles expired tokens Using Notification Hubs APNs WNS Notification Hub App back-end iOS app Windows app MPNSGCMADM
Demo: Hubs Creating a Hub Configuring a Hub Register and Push
Tags
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
Tags: Example Notification Hub App back-end Tag:”Tablet” Tag:”Phone” Tag:”Tablet”
Conference name Username Zip code Sports team Band name Stock ticker Other Tag Usages
Demo: Tags Registering with Tags Pushing with 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
Geo Push
1.Client requests location 2.Client uses reverse geocoding service to get zip (etc) 3.Client registers with Hubs using zip as a tag 4.Server pushes to zip code 5.All clients in that zip code receive notification Making GeoPush Work
Demo: Geo Push
Templates
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
Demo: Templates Registering with Templates Push to all the devices!
Client vs Server Registration
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
Notification Hub App back-end {id} upsert({id}, channel, tags) createId()
Demo: Server Registration
Push-to-Sync
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
Notification Hubs Cross-platform Push Notifications Highly scalable Managed
Resources Get a FREE Microsoft Azure Trial Account: Check out Notification Hubs SDK Source Code on GitHub Contact Details 35 Microsoft Azure
Thanks! Questions?
Azure footprint 16 regions worldwide in 2014
Fortune 500 using Azure >57 % > 250 k Active websites Greater than 1,000,00 0 SQL Databases in Azure >20 TRILLION storage objects >300 MILLION AD users >13 BILLION authentication/wk >2>2 MILLION requests/sec >1>1 MILLION Developers registered with Visual Studio Online
Get started Visit azure.microsoft.com