Push Notifications (WP7)

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen

Microsoft bietet für Windows Phone 7 an über einen eigenen Dienst Push Notifiactions (PN) zu verschicken, dabei gibt 3 verschiedene Arten von Notifications.

  • Toast - Meldung oben auf dem Display
  • Tile - Kachel auf dem Startscreen
  • Raw - Raw Daten für die Anwendung


Raw

Raw Daten werden zum Client übertragen und wenn die Anwendung nicht aktiv ist werden sie verworfen. Raw Daten unterliegen einem Größen-Limit von 1kb


Ablauf

In der Kommunikation für die PNs existieren 3 Parteien das WP7 Gerät, der Microsoft Push Notification Service (MPNS) und der eigene Server für die PNs.

PN-Kommunikation.png

Client meldet sich am MPNS an

Im 1. Schritt öffnet der Client einen neuen Channel zum MPNS oder erzeugt einen neuen, der verwendete Name dient nur des Wiederfindens des Channels auf dem Gerät: <code=csharp> httpChannel = HttpNotificationChannel.Find(channelName);

if ( httpChannel!=null) {

 // registrieren der Events
 // registrieren am eigenen Server
 // weitere Config wie für Toast Meldungen

} else {

 httpChannel = new HttpNotificationChannel(channelName, serviceName);
 // registrieren der Events
 httpChannel.Open();

} </code=csharp> Nach einer Änderung von Seiten Microsoft muss der serviceName nur gesetzt werden wenn man einen authentifizierten Push Service betreiben will, dann entspricht dieser dem Zertifikatsnamen.

Registrierung am Server

Wurde der Channel eingerichtet kann erhält man die URI vom Channel und kann diese an den eigenen Server übermitteln.

Senden von Daten

Hat sich der Client beim Server mit der URI registriert, kann dieser über diese Adresse Notifications an den Client schicken. Alle Daten die der Server zum MPNS schicken will müssen per POST gesendet werden und verschiedene HTTP-Header-Felder beeinhalten.

  • ContentType - text/xml; charset=utf-8
  • Content-Length - Länge der kompletten Daten
  • X-MessageID - ID für die Nachricht
  • X-NotificationClass - Art der Nachricht
    • Token = 1
    • Toast = 2
    • Raw = 3
  • X-WindowsPhone-Target - toast oder token (optional)

Schwächen/Begrenzungen

Aktuell sind keine Broadcast Nachrichten möglich, daher muss jeder Client einzeln angeschrieben werden. Außerdem garantiert Microsoft keine Übermittlung der Nachrichten.

Pro Channel/Uri ist es möglich 500 Nachrichten/24h zu versenden, will man mehr verschicken muss dazu ein Zertifikat für die Anwendung hochgeladen werden (Marketplace Account)

Wird die gleiche MessageID für mehrere Nachrichten verwendet, wird der Channel gelöscht und jede weitere Übertragung mit 404 quitiert.


Die URLs/Tokens verfallen nach einer gewissen Zeit (wie viel muss noch rausgefunden werden), der Push Server quitiert dies mit 412.

Weblinks