Details on the Push Notification app limits

Yesterday, Kevin Marshall wrote a blog post  with a good developer tip: to code defensively for the 15 application limit in push notification. 

I know the post was well intended (as a developer tip) and fair criticism (to platform limit); but a few people got confused or misinterpreted and we ended up with tweets or posts that said “Windows phone allows only 15 live tiles”, or “you must uninstall apps to free tiles”, etc..

Here are a few details you might care to know, so you can plan your app and be a good citizen:

  • Yes, the limit is fifteen third party applications can be concurrently subscribed  to receive push notifications (whether that is a live tile or toast).  Parsing it out, the applications that come out of the box (like outlook, people hub, etc.) will not count towards this limit.    So there is no limit on 15 live tiles.  You can have 20+ if you add it up (that is about 2.5 screens worth of tiles on star menu)
  • An application is only counted if it has push notification or tiles push enabled and is subscribed to a channel.  If you install an application but you do not enable push, it would not count towards the limit.
  • You should not have to go uninstall an application in order to free a slot.  If an application is coded well, it should be prompting users and giving them the option on whether they want to use push notifications and/or live tiles (since there is potential bandwidth charges from the operator when these are pushed).   if the user never agrees or it unchecks the box to subscribe, the application should free the channel; there fore uninstall should not be required.
  • Applications that use just scheduled tiles updates do not count towards the limit. If that is all you need be a good citizen and
  • If an application subscribes for tile updates, and is never pinned it unfortunately does count. Again, we count the channels.

To handle the error, as Kevin pointed out it is just a matter of listening for the exception, and right error message.  Then prompt user to turn-off push notifications in another app.   There is no API to list the applications using it – and I have not heard of a plan for this API –.

Is the limit too low, Kevin wonders.  Obviously there is no perfect answer as it varies by user. I do know that the product team did research on types of apps, categories, how many a typical user would pin, enable push, etc. and they went with 15 for v1, so it is not an arbitrarily low number.   I saw the data and it made good sense to me.  I also hear that the limit can increase later, as we get more apps and better data.  Full clarification, “can increase” only means we are constantly evaluation. it does not mean the next update will have this limit increased. Nothing to announce.  

Again, the key there is the planning was done for typical users. As developers, we tend to install more apps, and often enable the features just to try them out, but we are also power users that know when and how to turn these off.   On the rest, we will have to trust (and hope) that the data the researchers and planners had for typical users holds us until the limit is increased.

Why is there a limit?  The usual thrive to ensure there is a great user experience, good battery life, quality of service on back-end and front-end, bandwidth (cost) , etc.  Limit will increase as we get right data on how people use push, impact, etc.  Kevin’s feedback on there not being an API to enumerate all push apps is still valid.  I know the product team has heard it (from Kevin, me and others) so I hope that gets addressed or the limits go high enough that the problem becomes a moot point.

Hope that helps. 

My take,  when it comes to push,

  1. Don’t panic, code your app to take advantage of the platform. Tiles and push can be a nice differentiator for an app.  Let the user decide (15 is still a good number for average users).
  2. Code defensively against this limit. it is not hard (though mitigation prompt to the user is not perfect, but it does leave them in control )
  3. Prompt your users and ask if they want to use push, and if you are using live tiles give them the option to turn tiles off too..  If user opts out of both, free the channel.

Happy Windows Phone coding!