Universal Apps and Background Tasks


One of the best ways to distinguish your Windows Store app from the rest of the pack and add some design pizzazz is to have a meaningful, informative live tile. A good live tile should entice the user to click on and launch your app, in essence to use it. Live tiles essentially turn your computer screen into an information dashboard. So a live tile is one of the best marketing tools that you can have for your app. Marketing you say? Yes. You want people to download, and hopefully use, your app. If people use your app, they will not uninstall it. If they use your app, they will tell their friends about how great your app is, how they are in it all the time and can't live without it. In turn, those friends will download your app and tell their friends, who will tell their friends and on and on and on. The most coveted screen real estate is the left most part of the Windows Start screen. When the computer is first turned on, this is what is visible first to the user. Typically a user will configure the left most section of the Start screen with the apps that they use the most. For me, if your app doesn't have a live tile, you probably aren't going to get on that left most Start screen area, or you will be reduced to the smallest possible area. So what is a live tile? Even before Windows 8 was introduced to the world in Sept of 2011 we've had live tiles. They just haven't been called that and only really gained popularity and more extended use with the introduction of smart phones. Think back to the very first time you got a notification that you had new email, whether in the form of a pop up message or that little icon on your phone with the number of new email messages you just received. Yes, essentially that was a live tile. But for Windows 8 Store apps, a live tile is the Windows 8 replacement for the desktop icon of previous versions of Windows. A live tile is, well, ALIVE, meaning it can and should push information up out of your app to the user without them even having to open or have open your app. It should have context, meaning it should show the user information that your app has more of. Let's take a news app as an example. What information should a news app have? News. What information should a news app's live tile have? Breaking News and top stories. If a new app had stock market information, that wouldn't make sense unless of course there is breaking news about the stock market.

SymnapseLiveTileIn my Project Server app Symnapsethat provides project status and metrics in a dashboard application for Project Server, my live tile surfaces the project status information of projects that the user has chosen to "watch" and thus have put on their dashboard. Additionally, my app lets a user pin a specific project to their start screen so they can keep a closer eye on particular projects, all without actually going into my app.

Where am I going with this? Well, at the recent //Build conference in San Francisco, Microsoft reintroduced the notion, and tools to accomplish it, for the universal app. A universal app is an app that is written with one set of code and that will run across platforms; on desktop, tablet, phone and xbox with little or no change to the code. This has been the promise of Windows 8 since its introduction in 2011. With this introduction of the universal app, there are some changes app developers need to be aware of when creating their universal app. Not surprising are changes made to the Windows.Networking.BackgroundTransfer API to accommodate Windows Store and Windows Phone Store apps. The background transfer API is what feeds apps updated information in the background without the user having to request the update. It is what can feed live tiles and notifications with new information that a user needs to know and what will drive use of your app. The Windows App Team recently posted an excellent blog about the changes to the API and what app developers need to be aware of.  The blog is here. It has a lot of great information about the changes to the API, how it handles specific differences for each platform for things like network data policies and data transfer, resource management and more. So check it out and start working on your next Universal app!