Roberto Brunetti Mobile Blog

Bridging the Mobility Gap !

Recent Posts

Tags

Community

Email Notifications

.NET Blogs

Archives

Windows Phone 7 Beta upgrade 5

Con questo post abbiamo quasi finito il porting delle nostre applicazioni e librerie, nonchè le demo e i test alla versione Beta degli SDK.

In questo post ci dedichiamo alle modifiche alle classi del servizio Push Notification

Per la parte teorica fate riferimento ai due articoli di Mighell:

1) http://thinkmobile.it/blogs/mighell/archive/2010/06/18/microsoft-push-notification-service.aspx

2) http://thinkmobile.it/blogs/mighell/archive/2010/06/20/come-funziona-il-push-notification-service-in-windows-phone-7-series.aspx

Tra l’altro Mighell sta producendo un articolo completo che verrà pubblicato subito prima o subito dopo le ferie.

In questo post intanto anticipo le modifiche alle classi per coloro che hanno lavorato con la April CTP.

La classe NotificationChannelExceptionEventArgs è stata sostituita con NotificationChannelErrorEventArgs. La classe espone le informazioni sul tipo di errore, compreso il nuovo meccanismo di segnalazione del livello della batteria che potrebbe inibile l’arrivo di messaggi.

Ad esempio è possibile individuare i seguenti “Errori”; ho tolto dai vari case il nostro codice reale.

image

La seconda modifica riguarda il metodo BindToShellNotification che è divento BindToShellTile. Questo metodo accetta l’elenco degli Uri ammessi per l’invio di “risorse da remoto”

L’eccezione NotificationChannelExistException è stata rimossa e non sostituita per semplificare il codice che adesso può

1) Cercare se il canale utilizzato è già aperto (classica Find presente anche nella versione di Marzo)

2) Se il canale non viene trovato, si procede alla creazione e al binding verso la Shell

3) Si può testare IsShellTileBound e IsShellToastBound per evitare di legare nuovamente un canale già aperto alla Shell del telefono. Occhio che non si può eseguire un doppio BindToShell. Nel caso si debbano modificare le impostazioni si può eseguire un Unbind tramite il metodo UnbindToShellTile e UnbindToShellToast

La classe ShellEntryPoint è stata rimossa e adesso è possibile assegnare direttamente gli Uri per le risorse/domini esterni.

L’evento ShellNotificationReceived è diventato ShellToastNotificationReceived.

E’ cambiato anche leggermente il formato per inviare notifiche verso il canale.

Per le notifiche Tile occorre indicare (X-Notification class è in realtà opzionale e vale 1)

sendNotificationRequest.ContentType = "text/xml";
sendNotificationRequest.Headers.Add("X-WindowsPhone-Target", "token");
sendNotificationRequest.Headers.Add("X-NotificationClass", "<batching interval>");

Il messaggio può essere il seguente:

   <?xml version=\"1.0\" encoding=\"utf-8\"?>
   <wp:Notification xmlns:wp=\"WPNotification\">
       <wp:Tile>
          <wp:BackgroundImage>path</wp:BackgroundImage>
          <wp:Count>count</wp:Count>
          <wp:Title>tile</wp:Title>
       </wp:Tile>
   </wp:Notification>

Per i Toast invece occorre (come sempre X-Notification class è opzionale)

sendNotificationRequest.ContentType = "text/xml";
sendNotificationRequest.Headers.Add("X-WindowsPhone-Target", "toast");
sendNotificationRequest.Headers.Add("X-NotificationClass", "<batching interval>");

e il payload è rimasto invariato.

Ecco un esempio di Tile con immagine che “arriva” da internet di una nostra applicazione:

image

Comments

Roberto Brunetti Mobile Blog said:

Il 15/6 avevo avuto l’opportunità di tenere fra le mani un prototipo del nuovo device durante un incontro

# August 16, 2010 6:27 AM