Recently I published my first Windows Phone 7 application in the Marketplace. This app is named Singapore Public Holidays.I also adapted the same app to cater to the needs of my country of origin India and created an Indian version of the app which is called Indian Public Holidays. This post is about my experience in building the first Windows Phone 7 app.
Why this app?
Before I decided to developed the Singapore Public Holidays app, there were couple of other options that came to my mind. I thought of extending the NGTweet app which I had done as part of the Silverlight Learning Series. Another thought that came to my mind was to use some of the REST based public API’s and create some app with them. Something like Thought Of The Day service which can pull quotes from any of the public quotes services. Another thought was to build an app for some techie site like StackOverflow client for Windows Phone. All these ideas were either already implemented or were slightly complex. So I thought of building something which was very minimal in features and would not depend too much on external data. Also at the same time it had to be something useful. That’s when the idea of Singapore Public Holidays came to my mind.
The holiday list for the year 2012 is published online by the Ministry of Manpower of Singapore. I decided to build a small app which would list these holidays. Instead of just showing the static date, I thought of displaying the number of days remaining from the current date would be interesting for users. As a user it would also be helpful if I can set the reminder for a holiday. So the reminder functionality was also added in the updated version.
Just after I finished the first version of the app, Jesse Liberty suggested in his post published in MSDN magazine January 2012 Issue that “your first app should be interesting enough to be meaningful, yet simple enough to get underway”. I think my effort was inline with Jesse’s suggestions. Instead of spending weeks on developing an app I spend few hours of the day to get started. My intentions behind doing this was to understand the whole process of creating Windows Phone apps. I wanted to understand what all things are required to publish an app into the Marketplace and how long does it take for the complete process. Lets see how did I manage to do this.
Different steps involved in developing and publishing the app
First and foremost, we need the development environment to get started with building the intended application. Visual Studio 2010 was my preferred choice. Install the tools required for developing Windows Phone application using Visual Studio. The MSDN article about Create Your First Silverlight Application for Windows Phone is a good starting point.
Apart from the standard Silverlight for Windows Phone features we might need additional features. I wanted to use features like ToggleButton which are not natively supported by Silverlight 5. So I downloaded the Windows Phone Toolkit which has additional controls. This is exactly same as the toolkit available for Silverlight.
Once we have all the tools develop the application. This will take some time based on the complexity of the application. Once the application is developed we need to publish it to the central place where others can download it and install it on their Windows Phone devices. Marketplace is that central place which allows us to publish applications to the end users.
Before we can submit an app, we need to register as a Windows Phone Developer at App hub. This costs $99 USD for annual subscription using which you can submit up to 100 apps. Once the account is created you are ready to go.
The submission process is quite straightforward. You need to build the Silverlight application in Release mode and submit the .xap file along with the artwork. The artwork are a set of icons in different sizes which are used to represent the app in the Marketplace. These are also the icons which gets displayed on the Windows Phone device in the application list as well as on the home screen when the application is pinned to the start screen.
Once the application is submitted, you’ll have to wait for the certification process to get completed. This can take long time depending on how big or small the application is. The testing is done on multiple Windows Phone devices from different vendors like Nokia, HTC, LG, Samsung etc. to make sure that the app confirms to all the requirements defined in the Application Certification Requirement.
If everything goes fine, the application will be certified and you’ll be notified by email about the completion of the certification process. At the time of submitting the app to app hub, you can decide how should the app be published once it has passed the certification. I chose to automatically publish it but if you wish you can do it manually as well. The application submission walkthrough describes the whole process in more details.
Things to remember
When we do something for the first time there is always the tendency to forget something. Here are some of the things I missed out in my 3 submissions so far. Some of these things might be very silly but they can cause a delay of 1 week in publishing the app as the resubmission or an update goes through the same certification process.
Icons and Screenshots
The artwork required for marketplace is very important for the submission process. Make sure the size of the images is exactly the same as defined in the certification requirements document. The dimensions of the icons are clearly mentioned in the MSDN doc Application Submission Requirement. I had the agony of the app being rejected because I forgot to replace the default application icons.
Also the screenshots needs to be taken with care. I forgot to to turn off the frame rate counters in the emulator and that was also highlighted in the rejection reasons. But this was not very consistent because one of the apps got approved when the screenshots had the frame rate counters displayed on them. I guess this depends on the vigilance of the tester testing the app.
Choose the targeted market
By default none of the supported markets are selected when we submit the app. We need to either choose all the supported markets for publishing our app or only the ones which we are interested in. If you forget to choose the target marketplace, the app might get certified but nobody will be able to download it.
Be Patient
The management interface for handling the published apps and also to check the status of submissions in app hub is bit slow. It takes hell lot of time to refresh. Even after the certification is completed it might take more than 48 hours for the app to actually appear on the marketplace for the users to download. I received emails about the successful completion of certification for my apps but had to wait for more than 2 days to download the apps.
For the published apps we can get the statistics about the number of downloads, the crashes that has happened for users etc. Even this data is not available until a week or so after the app is published. On the whole this area seems to be very slow to react.
Conclusion
It is very easy to get started with the Windows Phone application development if you have prior experience in working with Silverlight. The complete process takes about 5-7 days to compete once the app is submitted until it is published in the Marketplace. There are not many apps available in the Windows phone Marketplace compared to iPhone or iPad. This might be an opportunity for people to develop interesting apps using the Silverlight technology which we are already aware of. If you don’t want to waste time in building native apps because you wish to build apps which can run on multiple platforms with minimal changes you can look at other options like offline HTML 5 apps. Thats a different topic altogether. But to get started with that approach you can look at PhoneGap which can be used to build native apps with web technologies.
There is no code associated with this post, so don’t look for any download from dropbox
Until next time Happy Programming
Further Reading
Following books might be helpful in developing Windows Phone applications.