8 tips for your Windows Store apps
1. Use Basic page than a blank template
For a good number of your tasks, you probably need a Basic page.
For starters, this page gives you the bare-bones required – a ‘Go back’ button and a placeholder for the applcation name.
This page also contains the VisualState for Snapped view, so you don’t have to handle it in code. When you choose to add a basic page to an empty solution, you’ll get a prompt like below.
Clicking on yes, adds some of the following files:
LayoutAwarePage – handles GoBack and GoHome events, visual state switching and process lifetime management
BindableBase – your view model can inherit from this instead of implementing INotifyPropertyChanged interface
BooleanNegationConverter, BooleanToVisibilityConverter – converters for databinding
SuspensionManager – retains the state of the app, so when a user closes your app on a particular page, he expects to be returned to the same page when he returns to the app (some amount of coding might be required from the developer’s side)
For all these benefits, start with a basic page instead of a blank page.
2. Do not modify contents of Common folder, create your own
Apart from the above mentioned files, there is also a StandardStyles.xaml file. This file provides styles and data templates that you can use in your application. There are good number of styles in this resource dictionary that are advisable to use as they follow the design guidelines and defaults defined by Microsoft. For example, there are styles defined for common buttons to be used in the App bar. But you are not necessarily restricted to use the styles and templates mentioned here. If you want to create a variation of the Standard250x250itemTemplate, you are free to do so. The only care you need to take is to not modify this data template itself, but add a new resource dictionary file and define all your custom data templates and styles in this file. You then need to reference this new resource dictionary in the App.xaml file.
1: <ResourceDictionary.MergedDictionaries>
2: <ResourceDictionary Source="Common/StandardStyles.xaml"/>
3: <!-- your custom resource dictionary -->
4: <ResourceDictionary Source="Common/CustomStyles.xaml"/>
5: </ResourceDictionary.MergedDictionaries>
3. Provide wide logo only if you have implemented live tiles
When you create a new Windows Store project, by default the wide logo is not created. For some reason, this is an optional logo. However, I recommend creating and including this logo as part of the first release of your application as part of the branding to go along with.
4. Set Show name to No Logos
In the Package.manifest file there is a settings called Show name. This shows the value set in the Display name field.
Say, I set it to All Logos, the logo ends looking like below on the metro desktop.
1. There is no control on where the text can be placed.
2. It might overlap on the your app logo (as above)
3. The color of the text might blend along with the color of your icon (again, as above).
4. There are only two foreground options that you can give – Light or Dark, and neither might go well with your branding.
For these reasons, I recommend setting it to No Logos. Users should recognize your app by the logo itself. This will also make you, as a developer, put more thought into creating that unique logo for each of your apps.
5. Importance of Privacy policy
I’ll be honest, my first Store certification failed due to the absence of a privacy policy. Part of the reason was that I did not know what I need to include in that document. @Pete_Brown gives good amount of details and the article (that I could not find during my first release to Store) that will help you document a good privacy policy. Make sure you have a web link for the privacy policy to provide in the terms when you are uploading your app to the Store.
6. Remove unwanted capabilities
When you create a Windows Store project, the Internet (Client) capability is selected by default.
If you app does not require it, make sure you uncheck it and all others that do not apply. Publish only those capabilities that are required by your app and nothing else. Plus, if you have Internet capability selected, MS guys expect a privacy policy (and u’ll be like.. ‘huh?? my app doesn’t even need internet access’).
7. Compress all your images
This might sound like ‘meh’, but it makes quite a bit of difference when you create your app package. I use tinypng.org as I find it simple to use and it’s pretty fast. I just drop the files on the web page and in a matter of seconds, my compressed files are ready to be downloaded.
There are quite a few sites that you can use for this, just make sure you use one.
8. WACK it
Windows 8 has a tool called Windows App Certification Kit (I just ‘WACK’ed it). You should run that tool on your app before you upload it to the store . This way you can fix the problems right away. Make sure you have built the app in release mode before running the tool on it.
I have written about it here if you want to run it at command prompt. The article was written for a pre-release version, but the concept remains unchanged. Also, in the RTM version, the tool does more tasks than mentioned in my blog article.
Running the tool through command prompt helps me save the result xml for future reference. I just rename the results xml file with the package version number.
Those are the tips I wanted to share for now. More later.
Update: Per Windows 8 guidelines, the wide logo needs to be included only if you implementing live tiles. Note to self: Implement live tiles for my apps. Thanks for the comment from Andrei Tozon.