Windows Phone Push Notifications – câteva limite

Nu am de gând sa povestesc ce sunt și cum se folosesc Push Notifications pe Windows Phone. O descriere foarte bună se găsește la http://msdn.microsoft.com/en-us/library/ff402558(v=vs.92).aspx

High-level, e similar cu Apple Push Notifications Service.
A nu se confunda cu Windows Push Notifications din Windows 8, foarte similar dar totuși diferit, măcar la suprafață.

Mai degrabă aș vrea să enumăr o listă de limite de care ar trebui să țină seama cineva care dezvoltă o aplicație ce folosește Push Notification, limite care sunt un pic ascunse prin documentație:

  • se pot crea maxim 30 de push notification chanells per device (era 15 initial) ==> aplicatia trebuie să trateze un posibil InvalidOperationException(PushNotificationChannelQuotaExceeded) când crează un chanell, dacă are ghinionul sa fie deja 30 de chanells create.
  • maxim 1 chanell per aplication/device
  • un service ce trimite push notifications către telefoane, dacă nu e autentificat prin TLS, are o limită de 500 de notificari per subscription (aplicatie/mobil) pe zi (http://msdn.microsoft.com/en-us/library/ff941099(v=VS.92).aspx)
    Când se atinge limita, se primește un cod de eroare (HTTP) 406 (Not Acceptable), cu NotificationStatus=Dropped.
    Pentru o aplicație contra cost, un certificat TLS nu costă asa mult.
  • dimensiunea maximă a unei notificări: 1KB header-ul, 3KB payload-ul
  • (cumva de așteptat) se pare ca se poate folosi doar push notification services oferit de Microsoft, hostat pe Azure (nu unul custom)
  • textul și titlul din toast message și tile updates trebuie să fie scurte, altfel sunt trunchiate (la http://msdn.microsoft.com/en-us/library/ff402558(v=vs.92).aspx sunt limitele mai exacte)
  • imaginile downloadate la tile push notification: max. 173×173, max 80KB, trebuie să se downloadeze in max. 30s, no https
  • Pentru ca aplicația să fie acceptată pe marketplace, trebuie să ceară permisiunea userului să folosească push notifications, deci trebuie să fie opt-in/opțional ==> nu ne putem baza pe push notifications pentru “core”-ul aplicației.
  • Dacă mobilul se conectează la net printr-un WiFi ce trece pritr-un proxy sau firewall, s-ar putea să nu reusească să deschidă un chanell spre Microsoft Push Notification Services

Astea sunt doar limitările la ora actuală pe care le-am descoperit până acuma, nu înseamnă că nu mai sunt și altele.
Și serviciul similar de la Apple are limitările lui, deci nu e ceva neobișnuit (ex.: un mesaj poate avea max. 256bytes).  Serviciul de la Google/Android (C2DM) e puțin mai generos: 1024bytes.

Morala: toată aplicatia trebuie codată defensiv, fără a prespune că notificările vor fi trimise, excepțiile și error code-urile trebuie prinse și tratate, retries și tot tacâmul.. 🙂

Advertisements
This entry was posted in .NET, Windows Phone and tagged , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s