Presentation is loading. Please wait.

Presentation is loading. Please wait.

Name Title Microsoft Corporation Push Notification Introduction and Platform Interaction.

Similar presentations


Presentation on theme: "Name Title Microsoft Corporation Push Notification Introduction and Platform Interaction."— Presentation transcript:

1 Name Title Microsoft Corporation Push Notification Introduction and Platform Interaction

2 2 Start Tiles 101 Shortcuts to apps Static or dynamic 2 sizes: small & large “Pin to Start”

3 3 Data Driven Template Model A fixed set of data properties Each property corresponds to an UI element Each UI element has a fixed position on screen Not all elements need to be used Background Image TitleCount Animations are not extensible

4 4 Tile Design Considerations Easy recognition Keep things simple Update tile in real-time

5 5 Notification Toasts 101 App icon + 2 text fields Interruptive, transient and chase-able Time critical and personally relevant Users must opt-in via app UI

6 6 Why does Push notifications give the end user great battery life? How does Push notifications contribute to a deterministic behavior? How does Push notifications change the developers design patterns? Windows Push Notifications Introduction

7 7 URI to the service: "http://notify.live.com/throttledthirdparty/01.00/AAFR QHgiiMWNTYrRDXAHQtz- AgrNpzcDAwAAAAQOMDAwMDAwMDAwMDAwMD A" Push enabled applications Notifications service HTTP POST the message Push endpoint is established. URI is created for the endpoint. 1 2 3 Rich Client, Web 2.0 Applications 3 rd party service Microsoft hosted server Send PN Message 4

8 Using PN from your Windows Phone application – Part #1 Try, Find, and New httpChannel = HttpNotificationChannel.Find(channelName); if (null != httpChannel) { //subscribe to Channel events //subscribe to Notification events //Register URI } else …. httpChannel = new HttpNotificationChannel(channelName, "HOLWeatherService"); httpChannel.ChannelUriUpdated += new EventHandler (httpChannel_ChannelUri Updated); //subscribe to Channel events httpChannel.Open(); //Register URI

9 Using PN from your Windows Phone application – Part #1 Try, Find, and New //Subscribe to the channel events private void SubscribeToChannelEvents() { httpChannel.HttpNotificationReceived += new EventHandler (httpChannel_HttpNotificationReceived); httpChannel.ShellEntryPointNotificationReceived += new EventHandler (httpChannel_ShellEntryPointNotificationReceived); httpChannel.ShellNotificationReceived += new EventHandler (httpChannel_ShellNotificationReceived); httpChannel.ExceptionOccurred += new EventHandler (httpChannel_ExceptionOccurred); }

10 Using PN from your Windows Phone application – Part #2 Subscribe to notifications private void SubscribeToNotifications() { //Subscribe to a toast notification httpChannel.BindToShellNotification(); ShellEntryPoint shellEntryPoint = new ShellEntryPoint(); shellEntryPoint.RemoteImageUri = new Uri("http://developer.windowsphone.com/Common/Fire/Images/bg- brand.png", UriKind.Absolute); //Subscribe to a tile notification httpChannel.BindToShellEntryPoint(shellEntryPoint); }

11 11 Live content from the cloud Tile extensions Only applies to background images of tiles Atomic operation performed when download completed

12 Sending Notifications – Server Side HttpWebRequest request = (HttpWebRequest)WebRequest.Create(channelUri); request.Method = WebRequestMethods.Http.Post; request.ContentType = "text/xml; charset=utf-8"; request.ContentLength = payload.Length; request.Headers[MESSAGE_ID_HEADER] = Guid.NewGuid().ToString(); //"token“ or “toast” request.Headers[NOTIFICATION_CLASS_HEADER] = ((int)notificationType).ToString(); if (notificationType == NotificationType.Toast) request.Headers[WINDOWSPHONE_TARGET_HEADER] = "toast"; else if (notificationType == NotificationType.Token) request.Headers[WINDOWSPHONE_TARGET_HEADER] = "token";

13 Sending Tile Notification – Server Side Need to POST

14 Sending Toast Notification – Server Side MemoryStream stream = new MemoryStream(); byte[] prefix = Encoding.UTF8.GetBytes("X-WindowsPhone-Target: TOAST\r\n\r\n"); stream.Write(prefix, 0, prefix.Length); XmlWriterSettings settings = new XmlWriterSettings() { Indent = true, Encoding = Encoding.UTF8 }; XmlWriter writer = XmlWriter.Create(stream, settings); writer.WriteStartDocument(); writer.WriteStartElement("wp", "Notification", "WPNotification"); writer.WriteStartElement("wp", "Toast", "WPNotification"); writer.WriteStartElement("wp", "Text1", "WPNotification"); writer.WriteValue(text1); writer.WriteEndElement(); writer.WriteStartElement("wp", "Text2", "WPNotification"); writer.WriteValue(text2); writer.WriteEndElement(); writer.WriteEndDocument(); writer.Close(); byte[] payload = stream.ToArray(); return payload;

15 Sending Tile Notification – Server Side Need to POST

16 Sending Tile Notification – Server Side MemoryStream stream = new MemoryStream(); byte[] prefix = Encoding.UTF8.GetBytes("X-WindowsPhone-Target: TOKEN\r\n\r\n"); stream.Write(prefix, 0, prefix.Length); XmlWriterSettings settings = new XmlWriterSettings() { Indent = true, Encoding = Encoding.UTF8 }; XmlWriter writer = XmlWriter.Create(stream, settings); writer.WriteStartDocument(); writer.WriteStartElement("wp", "Notification", "WPNotification"); writer.WriteStartElement("wp", "Token", "WPNotification"); writer.WriteStartElement("wp", "Img", "WPNotification"); writer.WriteValue(backgroundImageUri); writer.WriteEndElement(); writer.WriteStartElement("wp", "Count", "WPNotification"); writer.WriteValue(count.ToString()); writer.WriteEndElement(); writer.WriteStartElement("wp", "Title", "WPNotification"); writer.WriteValue(title); writer.WriteEndElement(); writer.Close(); byte[] payload = stream.ToArray(); return payload;

17 17Microsoft confidential. Response Code: HTTP status code (200 OK) Notification Status  notification received by the Push Notification Service  For example: “X-NotificationStatus:Received” DeviceConnectionStatus  The connection status of the device  //For example: X-DeviceConnectionStatus:Connected SubscriptionStatus  The subscription status  //For example: X-SubscriptionStatus:Active More information  http://msdn.microsoft.com/en-us/library/ff402545(v=VS.92).aspx Response Custom Headers

18 18 Technical Details: Security Authentication: Phone Client – MS server : TLS + WL Device ID MS Server – 3 rd party service: HTTPs (for third-party) Throttling for unauthenticated services Authorization Token (notification URI) validated with each PUSH notification

19 19 Summary Efficient battery utilization Minimize memory footprint Reduce processor cycles Unified heartbeat reduces number of connections Device is always “visible” from the cloud Simple programming model on the phone Simple to integrate existing Web 2.0 solutions Quick ramp up for developers who currently lacks services

20 20 Web 2.0 services which use the Web hooks pattern Download the tools! Works on the Emulator! http://developer.windowsphone.com Microsoft hosted push service is in production. What’s next?

21 QUESTIONS?

22


Download ppt "Name Title Microsoft Corporation Push Notification Introduction and Platform Interaction."

Similar presentations


Ads by Google