Building Store Ready Apps for Windows Phone

Posted by: Mayur Tendulkar , on 12/9/2013, in Category Windows Phone
Views: 22247
Abstract: In this article, we share some mantras to make Windows Phone Store Ready Apps

With mobile device proliferation, there is a large number of mobile devices available in the market, exceeding even laptops & desktops. As a developer, creating and listing your app in the Marketplace
offers you the opportunity to reach millions of Apps users. But you have to make sure that these apps meet the criteria set by respective stores.

In this article, we’re going to build an end-to-end Windows Phone Store Ready application which will meet all store requirements so that you can publish it for end-users to download. We’ll build a ‘MovieQuotes’ application which will show popular quotes from famous movies. We’ll keep this application very simple and focus more on getting this application certified on Windows Phone store.

This article is published from the DotNetCurry .NET Magazine – A Free High Quality Digital Magazine for .NET professionals published once every two months. Subscribe to this eMagazine for Free and get access to hundreds of free tutorials from experts

Windows Phone Development Environment

To create and test Windows Phone 8 applications, we’ll need a Microsoft Windows 8 Pro 64 bit machine with Second Level Address Translation (SLAT) support. More information about this requirement can be found here: http://msdn.microsoft.com/en-US/library/windowsphone/develop/jj863509%28v=vs.105%29.aspx

Once this developer machine is ready, we can install Windows Phone 8 SDK. This SDK will provide a Free edition of Microsoft Visual Studio Express for Windows Phone, which can be used to create our ‘MovieQuotes’ application. If Microsoft Visual Studio 2012 is already installed on the dev machine, this SDK will integrate into it, providing more benefits.

Creating MovieQuotes Application

To create ‘MovieQuotes’ application, start Visual Studio and navigate to File > New > Project. In the next dialog box, select Windows Phone as a project type under C# Language. In Project Template select ‘Windows Phone Application’. Give ‘MovieQuotes’ name to the project. The dialog box will look similar to one shown below:

windows-phone-app

Once we click on ‘OK’, Visual Studio will ask us to select Target Windows Phone OS version. We’re going to build this application for Windows Phone 8. Select this OS version and click on ‘OK’ again.

windows-phone-version

At this time, the project is created and Visual Studio will load this project. Visual Studio will also provide a WYSIWYG interface for creating Windows Phone projects.

windows-phone-project

MovieQuotes Data

To keep things simple and focus on the Store Ready aspect of this article, we’re going to use an XML file which will hold popular movie quotes. To add this XML file to your project, click on Project Menu > Add New Item to bring up a new dialog box. Select XML file type, name it as ‘MovieQuotes.xml’ and click on ‘Add’ button.

To start with, let’s add some records in this file. Type following lines of code into this file.



 
    I'm gonna make him an offer he can't refuse.
    The Godfather
    http://www.imdb.com/title/tt0068646/
 

 
    Godfather.jpg
    No Sicilian can refuse any request on his daughter's wedding day.
    The Godfather
    http://www.imdb.com/title/tt0068646/
 

 
    Up there with the best of the best.
    Top Gun
    http://www.imdb.com/title/tt0092099
 

 
    Apollo13.jpg
    We just put Sir Isaac Newton in the driver's seat.
    Apollo 13
    http://www.imdb.com/title/tt0112384
 

 
    Apollo13.jpg
    Houston, we have a problem.
    Apollo 13
    http://www.imdb.com/title/tt0112384
 


Reading Quotes

Now let’s add another class, which will allow us to read this XML file. Click on Project Menu > Add Class. Give it a name as ‘QuotesReader.cs’ and click on ‘Add’ button.

In this class, write the following code. To make things simpler, I have added some inlinecomments with the code.

///


/// MovieQuotes Class to represent MovieQuote from XML file
///

public class MovieQuote
{
public string Text { get; set; }
public string Movie { get; set; }
public string ImdbUrl { get; set; }
}
///
/// Reader Class to read quotes from XML file
///

public class QuotesReader
{
public List GetMovieQuotes()
        {
            var xdoc = XDocument.Load("MovieQuotes.xml");
            var quotesList = from x in xdoc.Descendants("Quote")
                select new MovieQuote
                {
                    Text = x.Element("Text").Value,
                    Movie = x.Element("Movie").Value,
                    ImdbUrl = x.Element("IMDB").Value
                };
            return quotesList.ToList();
        }
}
///
/// Extension Class to load Random/Next Quote
///

public static class Extenders
{
public static T GetSingleRandom(this IEnumerable target)
        {
            Random r = new Random(DateTime.Now.Millisecond);
            int position = r.Next(target.Count());
            return target.ElementAt(position);
        }
}

Modifying MainPage

Once the Reader class is ready, let’s jump-in and modify MainPage.xaml to show quotes from the Reader. In MainPage.xaml file, locate TitlePanel and modify the code as shown below. This will show the Movie name in the page title.




In the ContentPanel on the same page, add a TextBlock using the following code. This will display movie quote in the content area.




In this page, before Page tag ends, add an ApplicationBar which will hold buttons to show Next & Previous quotes. The code at the end of the page should look like the following:








This is the only thing which is required to show movie name and quote from reader. Now, let’s modify the code behind to ‘actually’ show quotes on the page.

Modifying MainPage Code Behind

In MainPage.xaml.cs, modify the code as shown below. Again for simplicity, comments have been added.

//Private variables to hold movie quotes
private List _movieQuotes;
private QuotesReader _reader;
// Constructor
public MainPage()
{
InitializeComponent();
       Loaded += MainPageLoaded;
}
//When page is loaded, read quotes using reader
//And bind it to main page
private void MainPageLoaded(object sender, RoutedEventArgs e)
{
_reader = new QuotesReader();
       _movieQuotes = _reader.GetMovieQuotes();
       this.DataContext = _movieQuotes.FirstOrDefault();
}
//Handle previous quote button click
private void BackClicked(object sender, EventArgs e)
{
this.DataContext = _reader.GetMovieQuotes().GetSingleRandom();
}
//Handle next quote button click
private void NextClicked(object sender, EventArgs e)
{
this.DataContext = _reader.GetMovieQuotes().GetSingleRandom();
}

Test Project

At this point, our application is ready. Now Run the project and see the output. Inside emulator, you’ll see different quotes.

winphone-test-project

Before Publishing The App

Now, the ‘MovieQuotes’ app is complete (from a demo context). However, it is not ready to pass certification process. There are some more steps that need to be followed to make sure this app meets certification guidelines and passes all the tests. Now let’s visit all these steps and run them over through this application.

01. Build in ‘Release’ Mode

It is mandatory to build this application in ‘Release’ mode to submit it to the App Store for download. To change the build mode from ‘Debug’ to ‘Release’, click on Build menu > Configuration Manager. In the next dialog box, make sure that the configuration is set to ‘Release’

configuration-manager

02. Application Icons & Splash Screen

It is mandatory to provide application icons with application. Default Star-Burst icon is unacceptable and application may fail during certification tests. To create application icons, you can use any graphics editing tool like Adobe Photoshop, Illustrator or even Microsoft Paint. I recommend using Windows Phone Icon Maker, which is freely available at codeplex and link is: http://wpiconmaker.codeplex.com/
For Splash Screen, as mentioned earlier, any graphics editing tool can be used.

This tool will generate icons of different sizes which are required during application design and submission process.

Fig8

Once these icons are created and saved, open Project > Properties > WMAppManifest.xml. This will open a tool, which will allow you to associate the icons to the project. Along with icons, do provide a complete description of the application in this tool.

associate-icons

03. Disable Debug Information

During debugging, application shows frame-rate counter and other debug information. This functionality is enabled by default. When app is ready to publish, disable this functionality. To disable, open App.xaml.cs and comment out this line of code

// Display the current frame rate counters.

//Application.Current.Host.Settings.EnableFrameRateCounter = true;

04. Take Screenshots

Screenshots are required during app testing and whilst submitting the app to the store. Windows Phone SDK & Emulator makes it easy to take screenshots with appropriate resolution. Run the project again and this time, use Emulator tool to take the screenshots. Take at least 3 screenshots for further use.

emulator-screenshots

05. Set Test Parameters

Once again make sure that the Build mode is set to Release, all icons are in place and some screenshots are taken. Now click on Project menu > ‘Open Store Test Kit’. Associate all images to respective blocks. The window should look like the one shown below.

store-test-kit

Don’t forget to build the project at this stage. It will associate all information and create a new build for test. Now, click on Automated Test on left pane and click on ‘Run Tests’ button. Once, all the tests are run on the project, it will show the test results.

test-results

06. Windows Phone Application Analysis

MovieQuotes application doesn’t involve lot of processing. Also, the data is stored within the application. If application is using intensive graphics, animations, frequent web service calls or lot of computations, it is always a good idea to run Windows Phone Application Analysis tool on the app.

While Publishing The App

Once above mentioned steps are followed and test results are passed, this application is ready to submit to the App Store. However, there are a couple of things which needs to be considered while processing these submission. Let’s visit them here.

01. Provide Correct Information

Even though it is not mandatory, it makes sense to match the application name inside the app with the application name on display. It is also advisable to select specific category for the application. An educational application can be submitted inside education; as well as books + reference. So choose the category wisely, where people will actually look-out for the application.

02. Pricing

Developer/Publisher can price the application according to their expectations. However, make sure that W8 form(required by the USA) and other formalities are completed before the app is submitted to the store. Else, it can get complicated when withdrawing/transferring money earned from app sales.

To get more audience to use your app, it is always a good idea to provide free/trial or freemium application version. This will give a chance to audience to test your app and if they like, they can purchase the higher version.

03. Market Distribution

Unless the app is really targeted to certain markets (country regions), be restrictive about publishing to that market. Every region has their own certification requirements. For example, different countries have different rules for content certification, minimum age requirements, localization, etc. If the app is submitted to all the markets, it will take time to certify and sometimes, more information or changes in the app may be required to meet those certification requirements.

04. Certification Notes

MovieQuotes application doesn’t require any authentication. However, there can be some apps which may require authentication. There also can be some apps with special cases like localization on some pages, some unpredictable content served from web service. In this case, this information (may be a test-user account credentials) can be provided under certification notes. These notes can help testers to validate your app and certify it.

05. Legal & Privacy Statement, Support Email Address

It is mandatory for the publisher to provide valid Legal and Privacy statements during submission process. Publisher can host 2 different html files e.g. site.com/legal.html and site.com/privacy.html. For simplicity and in a scenario where the publisher doesn’t have a website hosted, these files can be put on SkyDrive with public read access or on a blog as well.

Along with this information, there must be a support email address provided to submit the app. This can be used by end-users if they need any support. Creating separate Distribution List or Email ID will help.

After Submitting The App

With these basic points in mind while developing and submitting the app to the store, it is very unlikely that your app will fail the certification. However, if the app fails for some reason, the publisher will receive a detailed error report which can help track-down the exact details of the error and the developer can fix it.

Conclusion

With these mantras, I’m quite sure that many of you will find building Windows Phone applications a fun activity and easy to publish on the store. With this, happy coding :)

Download the entire source code from our GitHub Repository

Was this article worth reading? Share it with fellow developers too. Thanks!
Share on LinkedIn
Share on Google+
Further Reading - Articles You May Like!
Author
Mayur Tendulkar works as a Local Type Inference (i.e. Consultant) at Zevenseas. He has worked on various Microsoft technologies & is part of Pune and Mumbai User Groups. Since 2008, he has been a speaker at various Microsoft events. You can reach him at mayur[dot]tendulkar[attherate]hotmail.com


Page copy protected against web site content infringement 	by Copyscape




Feedback - Leave us some adulation, criticism and everything in between!
Comment posted by Roshni Bajaj on Wednesday, January 8, 2014 9:14 AM
Such a pathetic article, and this guy is a Windows Phone MVP.
Comment posted by Phillipe on Friday, January 10, 2014 7:50 PM
What's so pathetic? Looks like a fine introduction to WP to me!

Categories

JOIN OUR COMMUNITY

POPULAR ARTICLES

FREE .NET MAGAZINES

Free DNC .NET Magazine

Tags

JQUERY COOKBOOK

jQuery CookBook