Raymond Chen of The Old New Thing has a great post about paying your “taxes” as a Win32 developer, meaning you have to worry about features of the OS that your app may not be directly calling, but your users might be using. (examples are roaming user profiles, Fast User Switching, Hierarchical Storage Management, etc.) Here are more of his articles about “taxes”.
So: what are the “taxes” in Universal app development for Windows/Windows Phone? Here’s the list I came up with, and you can use this as a checklist before releasing a new app. Before you get discouraged at the length of the list, a lot of these are fairly easy to do!
WP means Windows Phone only and Win means Windows only, otherwise it applies to both.
(this doesn’t mean that you have to support these, but you should be aware of them and disable support if your app doesn’t play nicely)
- WP: Themes – make sure to test your app in both a light and dark theme. (info about themes, including a good list of theme resources that should work in both themes. Note that those links say they only apply to WP 8.1 Silverlight, but I believe they apply to XAML apps as well)
- Suspend/resume – in XAML apps this is pretty easy to do, just save your state in e.PageState in the navigationHelper_SaveState() method and restore it in navigationHelper_LoadState(). (see how to trigger suspend/resume events in Visual Studio for testing purposes)
- Win: Resizing and snapped mode – the user can resize your app to a minimum of 500px. If you want, you can allow the user to resize it down the 320px if that makes sense for your app. (see how to handle resizing – the usual way is to trigger a VisualStateManager change and use Storyboards in XAML to move things around or resize things)
- Orientation: In both Win and WP, your app can be used in portrait or landscape mode by default. If it doesn’t look good in one or the other, you can either make it look good, or just disallow it. (see how to make it look good and how to disallow particular orientations)
- Splash screen: With Universal apps, every app needs a splash screen – and don’t use the default one Visual Studio gives you! (see how to specify an image and background color)
- Trial version – if your app is paid, allowing users to try your app will result in many more downloads! (see how to limit functionality during a trial)
- Win: keyboard accessibility – make sure the TabIndex on your controls are set in a reasonable order, and consider adding keyboard shortcuts for common actions (see how to implement keyboard accessibility)
- WP/Win: high-contrast theme – set your phone/device to a high-contrast theme and make sure it looks reasonable and is easy to read. (see more about high-contrast themes)
- Win: accessibility in the Store – if you did the previous two items, you might as well go all the way, make your app fully accessible, and declare it as such in the Store. (see how to declare your app is accessible)
- WP: Kid’s Corner – if you’re expecting children to use your app, you can detect if it’s being run from Kid’s Corner and disable in-app purchases, etc. (see how to detect if your app is being run from Kid’s Corner)
- Localization – there are a lot of Windows and Windows Phone users in countries where English is not the primary language, so supporting other languages can greatly expand the reach of your app! (see how to prepare your app for localization)
- Share contract – allowing your app to share data makes it more usable. (see how to share content – note that while Windows 8 has the Charms bar so the user can share at any time, Windows Phone does not, so you’ll have to provide a UI for sharing)
Good for your app
These are not “taxes” per se, but they’re definitely things you should think about before releasing your app!
- About page – make it easy for people to contact you with problems/suggestions! (my universal app template provides an About page)
- Rating reminder – more ratings help your app be more visible in the Store. (I recommend the AppPromo package in NuGet, which supports universal apps)
- Link to your other apps – if people like your app, make it easy to find your other apps they might like! (my universal app template provides an easy way to link to your other apps in the Store)
- ads/monetization – just a reminder to think about how you plan on monetizing the app.
Hopefully this will help you not forget anything when you’re almost ready to publish your next app! And if I forgot anything, let me know at @gregstoll or email@example.com and I’ll update this list.
See all my Windows Phone development posts.
I’m planning on writing more posts about Windows Phone development – what would you like to hear about? Reply here, on twitter at @gregstoll, or by email at firstname.lastname@example.org.