Microsoft Push Notification Service

Microsoft Push Notification Service (commonly referred to as MPNS) is a mobile service developed by Microsoft. It allows for developers to send push data from servers to Windows Phone applications. The MPNS is natively supported on applications that target the Windows Phone 8 Operating System. Microsoft announced the Windows Notification Service for Windows 8 and Windows Phone 8.1 in 2011, effectively replacing the MPNS with this service. The MPNS can be used on applications that are installed on Windows Phone 8.1 if the source code is migrated to a Microsoft Silverlight application, modified to target Windows Phone 8.1, and was already registered to use the MPNS before the upgrade.

Implementation
The MPNS is natively designed for use with Windows Phone 8 applications that implement the service. It allows for developers to send toast notifications, as well as update the tile image and flip notification text on the application's Windows Metro start screen tile. This is accomplished by developers by sending POST messages to the MPNS server network with the request and relevant content. A user typically must allow for data or notifications to be received before an application will register with the MPNS for notification data. The MPNS can be implemented to send notification data using an encrypted channel if the developer purchases an SSL certificate from a third-party provider and uploads its private key and certificate data to their Microsoft Developer Portal account. Otherwise, the MPNS can be implemented to send notification data using an unencrypted channel. Applications that utilize unencrypted channels have rate and size limitations with all notification requests and content that is updated or displayed to the device. These limits can be lifted by purchasing an SSL certificate and switching to utilize MPNS encryption.

Architecture
The MPNS consists of servers and internal interfaces that maintain and store Channel URI Identifiers and device information, authenticate POST requests received from developer servers, and enqueue and deliver requested data to mobile devices. When an application registers for data and notifications, it receives a unique Channel URI Identifiers from the MPNS network. This identifier is used by the application developer's third-party server to reference the device that the particular data delivery request will be sent to. After the mobile device receives its Channel URI Identifier, it is then sent to the developer's server to be stored. When a server sends a POST message to the MPNS network for data delivery, the Channel URI Identifier is included within the message payload, along with the data to deliver, and any parameter options specified. The MPNS network will authenticate the identifier, and enqueue the data for delivery to the mobile device.