Windows Phone and IconicTile updates

The project I work on right now is a fun one. It has all sorts of technology mixed. The base application is a Windows 8.1 with a Windows Azure Mobile Services backend. This means I get to do C#, XAML, NodeJs, Javascript and a lot more weird technology. My main projects are hosted in Visual Studio Online (TFS in the cloud) while my Azure scripts are stored in a Azure GIT repository. I see a lot of technology in a normal day.

However, what is really frustrating is the lack of documentation on the Windows Azure Mobile Client side of things. I spend most of my time in Google trying to find simple answers to simple questions, such as: where can I find a specific module? Or: how do use that module?

One of the apps is running on Windows Phone 8. I decided to give it an Iconic tile which is basically a static tile with a title and an icon. Nothing fancy there. But I needed to send updates from the backend about the number of messages waiting for the user to be read. This is one of the big things in Windows Phone of course: live tiles with instant information. So I wanted to send out push messages from the Azure backend to the phone.

There are tons of examples out there on how to do this. And all of these examples are almost exactly the same. And none of them work…

After a full day of exploring and Googling (I have definitely given up on Bing: it doesn't find anything when it comes to this sort of thing), I finally found, somewhere deep in the bowels of the internet, the cause and the solution.

The thing is: it all works just great as long as you don't use IconicTiles. FlipTiles and Cycle tiles all work great but IconicTile isn't supported in the backend. And there is no information about this. I repeat: the documentation says nothing about this. You can use the tiles in your app, but you cannot use them in the backend.

Luckily, Jeff Wilcox ran into the same problem and solved it by creating his own push package you can use.

The usage is pretty simple: you import the module mpns (found here) and use that instead of the normal push.mpns package. This one has the long sought after sendIconicTile method:

var payload = {
count: updateCount
};

mpns.sendIconicTile(
handle, payload, function () {
// nothing
});

This works great. I have updates now in my app. But… the big questions are

  1. Why doesn't Microsoft support this out of the box? The do have the sendTile and sendToast methods, why not this one?
  2. Why isn't this documented? If you decide not to support parts of your own technology, well, I guess that's your choice. But please let me know, instead of hiding it.

I love the platforms WP8, Win8 and Azure Mobile Services but this part has taken a lot of energy and a lot of frustration. Please people from Microsoft: do something about either points…

Right. Back to coding!