How a Windows Phone Store bug broke our app (and ratings) for 3 months

With app reviews like the one above, it was pretty obvious my startup’s Windows Phone application wasn’t working. But why it wasn’t working has baffled us, Nokia’s technical experts and Microsoft’s Windows Phone developer evangelists up until just a few days ago when we finally got to the bottom of it: a Windows Phone Store bug.

The SoundGecko Windows Phone app launched with a little bit of fanfare in mid-September as a result of user requests and, well, my own demand.

It wasn’t always apparent that the app had a huge breaking issue because the apps deployed to our testing phones through Visual Studio worked perfectly. And the fact that it passed through the otherwise-extremely-strict Windows Phone Store certification process (several times), there was no reason to doubt their seal of approval.

When we started getting in emails by the horde about why it wasn’t working, I started investigating. The application on Windows Phone 7 would launch and navigate, but when you tried to play the audio, it would not. It wasn’t until much later we found out it crashed at launch for Windows Phone 8.

After several dozen emails to Nokia, Microsoft Australia and Microsoft US, they could all reproduce the issue but no one had any idea why. No one really seemed to care either – why fix one app when you can get 100 new apps by running a competition?

It was only after I ran into a few friends on the Windows Phone team at BUILD 2012 last month that someone actually committed to helping us fixing the issue, instead of sweeping it under the carpet. Only this week they identified a potential issue – “a bug in the store pipeline“. Yikes.

The actual problem as it turns out is that “background audio” is not properly detected by the Windows Phone Store’s “capabilities detector”. As a security measure, this process exists to overwrite the declared app capabilities by the developer (in the manifest) by analysing the source code of the app submitted to the Store. The problem is it hasn’t worked correctly since 2011 it seems.

The capability “ID_CAP_MEDIALIB” is necessary for our app to function, but the capabilities detector never figures that out. The workaround is to add a single line of arbitrary code, code that has no use to our app, that the detector will identify and add the required capability. For shits and giggles, it is:

Five days later, today, with an app store review of 1 star in several markets, the update with the workaround was finally approved by certification (what the hell were they testing before). The working app is now in the Store.

For the several thousands users who have so far downloaded the Windows Phone app, I’m sorry for any inconveniences caused. I hope you’ll get the update, try the app again and update your reviews.

13 insightful thoughts

  1. I, too, have been burned by this in the past, when I made an app that was mostly static content, and had a web browser control and I never used through code (only XAML). The app would run perfectly fine, but the store certification failed because the Internet capability wasn’t detected and the test package was created without it and the app would crash on launch. It took me a long time to figure out why the certification was failing. And this was back in 2010.

  2. Yep. Luckily prior to submitting “Live Music Access” for certification, I stumbled into a warning about including some unused code to trigger the detection of the capability.

    1. I’m in Australia and can confirm that review is real, and still there.
      Nothing but 5 star reviews since the update here, which has lifted the average to 3 stars now.

  3. I feel your pain exactly. CloudMuzik blew up once Microsoft compiled it to work with WP8. They then told me to add a functional capability to allow more memory to the app. That didn’t work so I had to make a WP8 specific app. It was approved December 6, yet because of a back end issue (Support technician told me this), the new and working version isn’t displaying on the WP8 Marketplace, yet it shows up on windowsphone.com. According to the support technician, a lot of developers ran into this issue and the engineers are “working on it and have no ETA”. Can someone say reviews down the drain?

  4. Ouch. That must’ve been frustrating. However, the digs at Microsoft and Nokia techs for not dropping everything and working on your issue seem really unprofessional.

  5. I Know your pain, but as I’ve said before numerous times on twitter, knowing the issues with the marketplace and just blaming them isn’t always the right thing, if you know updates are an issue on a platform (and sometimes even if they are not) then plan for it. Have a way to communicate to your users if the worst should happen and you need to let them know you are working on a fix.

    I’ve recommended several times now to put a communication framework in your app to handle these kinds of scenarios, whether it’s a “messages” feature like with most social game frameworks or even something as simple as AdRotator’s House ads feature where you can have it display info to the user when it’s needed (or even just rotate it within the ads). Some users have implemented AdRotator to do just this, not display ads but to grab some remote XAML and display it in a space when available, if not AdRotator then other frameworks that support it, hell even SignalR (lots of tutorials on that now) to get the message out.

    Don’t just blame the store, you do have some part in this too as its your own app, plan for the worst, hope for the best!

    My 5 cents/pence worth.

Leave a Reply