1 / 21

Name Title Microsoft Corporation

Push Notification Introduction and Platform Interaction. Name Title Microsoft Corporation. Start Tiles 101. Shortcuts to apps. Static or dynamic. 2 sizes: small & large. “Pin to Start”. Data Driven Template Model. A fixed set of data properties.

onslow
Download Presentation

Name Title Microsoft Corporation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Push Notification Introduction and Platform Interaction Name Title Microsoft Corporation

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

  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 • Animations are not extensible Background Image Title Count

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

  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. Windows Push Notifications Introduction • 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?

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

  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 = newHttpNotificationChannel(channelName, "HOLWeatherService"); • httpChannel.ChannelUriUpdated += newEventHandler<NotificationChannelUriEventArgs>(httpChannel_ChannelUriUpdated); • //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 privatevoidSubscribeToChannelEvents() { httpChannel.HttpNotificationReceived+= newEventHandler<HttpNotificationEventArgs> (httpChannel_HttpNotificationReceived); httpChannel.ShellEntryPointNotificationReceived += newEventHandler<NotificationEventArgs> (httpChannel_ShellEntryPointNotificationReceived); httpChannel.ShellNotificationReceived += newEventHandler<NotificationEventArgs> (httpChannel_ShellNotificationReceived); httpChannel.ExceptionOccurred += newEventHandler<NotificationChannelExceptionEventArgs> (httpChannel_ExceptionOccurred); }

  10. Using PN from your Windows Phone application – Part #2 Subscribe to notifications privatevoidSubscribeToNotifications() { //Subscribe to a toast notification httpChannel.BindToShellNotification(); ShellEntryPointshellEntryPoint = newShellEntryPoint(); 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. Tile extensions • Live content from the cloud • 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"; elseif (notificationType == NotificationType.Token) request.Headers[WINDOWSPHONE_TARGET_HEADER] = "token";

  13. Sending Tile Notification – Server Side • Need to POST • <?xmlversion="1.0"encoding="utf-8"?> • <wp:Notificationxmlns:wp="WPNotification"> • <wp:Token> • <wp:Img><backgroundimagepath></wp:Img> • <wp:Count><count></wp:Count> • <wp:Title><title></wp:Title> • </wp:Token> • </wp:Notification>

  14. Sending Toast Notification – Server Side MemoryStream stream = newMemoryStream(); byte[] prefix = Encoding.UTF8.GetBytes("X-WindowsPhone-Target: TOAST\r\n\r\n"); stream.Write(prefix, 0, prefix.Length); XmlWriterSettings settings = newXmlWriterSettings() { 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.WriteEndElement(); writer.WriteEndDocument(); writer.Close(); byte[] payload = stream.ToArray(); return payload;

  15. Sending Tile Notification – Server Side • Need to POST • <?xmlversion="1.0"encoding="utf-8"?> • <wp:Notificationxmlns:wp="WPNotification"> • <wp:Token> • <wp:Img><backgroundimagepath></wp:Img> • <wp:Count><count></wp:Count> • <wp:Title><title></wp:Title> • </wp:Token> • </wp:Notification>

  16. Sending Tile Notification – Server Side MemoryStream stream = newMemoryStream(); byte[] prefix = Encoding.UTF8.GetBytes("X-WindowsPhone-Target: TOKEN\r\n\r\n"); stream.Write(prefix, 0, prefix.Length); XmlWriterSettings settings = newXmlWriterSettings() { 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.WriteEndElement(); writer.Close(); byte[] payload = stream.ToArray(); return payload;

  17. Response Custom Headers • 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

  18. 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

  19. What’s next? 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.

  20. Questions?

More Related