Inside the PASS Event Browser for Windows Phone (Part 2)
OK, so here is the second part of what has turned out to be a very long blog post about my PASS Events Browser app for Windows Phone 7.5 (“Mango”). In the previous post, I covered the technical and design decisions that I made for this app, as well as some of the design elements. This post focuses on the publishing process and my future plans for this app. In a final post, I will describe my future plans for the app.
Publishing to Windows Phone Marketplace
As you may recall from reading my previous posts, I was trying to land this app hot—in time for the PASS Summit 2011. I was running out of time with no margin for errors. I had a heads-up from Phani to make sure my app worked when there was no network connection (this bounced his first attempt at certifying his OData Browser app). Having taken care of network connectivity checks, I submitted the PASS Event Browser via the submission process on AppHub. The submissions process was a little confusing, and it required a last-minute scramble to create some of the many images needed by Marketplace (I have already prepared my screen captures—which I did using the emulator, which makes it easy to do). From what I had read, I knew that the certification process took around 5 business days, but could range from 3 to 10 days; plus it took about a day for a certified app to make it up to Marketplace. Three days and I would be able to make the conference, but anything later than that….all I could do was wait.
The PASS Summit 2011 started in a Tuesday. That Tuesday night I received a notification from Marketplace…my app had failed certification. Drat!
In my rush to get the app published, I had not taken the time to carefully re-read the copious certification requirements article. As a result, I had forgotten to run the app with light phone theme enabled. I designed the app using the (default) dark theme—light text on my dark background image. This meant that when the light theme was enabled instead, all of my text disappeared—black on black. To resolve this issue, I simply created white versions of my background images instead of taking the time to create a custom theme resources for the app (as demonstrated by Matthieu).
I was able to recover from the light theme failure, and I resubmitted the app later on that same nigh. However, I knew that I had blown my chance to make this year’s Summit. I was also rattled when the Current Crash Count number on my submission page suddenly jumped from zero to 4. Yikes! However, after several more days of waiting, I got the certification success email on Saturday morning—the day after the Summit has ended. Que sera, sera.
The Marketplace Test Kit
After having already passed on my second certification attempt (now properly handling the light theme and despite the 4 crashes), I ran across the Windows Phone Marketplace Test Kit. In my haste, I hadn’t noticed it before, hiding in the Project menu in VS—probably because it was added in Mango to the SDK 7.1. This test kit is a must for anyone trying to certify their app; had I know about this, I would have certainly passed certification on the first try and been live for the Summit. This kit also prepares you for your submission by telling you what images to get together before you start your submission.
The kit has four parts:
- Application Details – helps you prep your images.
- Automated Tests – runs some of the basic package upload checks required to start the certification process.
- Monitored Tests – you run your app though its paces, and the kit collects data, such as crashes, memory used, back-button handling, and launch time—all potential deal-breakers.
- Manual Tests – this reads more like the full certification document—but it does warn about the light theme gotcha.
The Crash Count
I ran across another helpful Marketplace tool after my successful certification. I discovered that, beginning with your application submission, Marketplace tracks app crashes reported by your app—for folks who are opted-in (I got 4 just in certification testing):
The best thing about this report is that you can download an Excel spreadsheet of the actual stack traces of the (reported) app crashes. This enabled me to quickly isolate and fix the bugs causing my four crashes (missing null checks) before my first update. Kudos to the phone guys on this one!
Publishing an Update
Another great thing about the Marketplace platform is the ability to push updates, which customers get notified of when they run the Marketplace app on the device. In development, I am always tempted to add just one additional feature that I want folks to have. But with Marketplace updates, I can publish an app more quickly with a reasonable feature set, and then shortly refresh the app with an update to add those last few features. When I submitted v1.0 of the PASS Events Browser, I had just converted the app to Mango and the SDK 7.1, so all of the OData queries were still using URIs instead of LINQ. My first update, which I rolled-out three days or so after the app went live, fixed my crashes and converted my OData queries to LINQ (this as v1.1).
The update process is basically the same as the initial certification, except that all of the application metadata is persevered. This means that you really only need to upload a new .xap package, and possibly update the app description.
In the next (and final) post, I will muse on future planned improvements to the PASS Events Browser.