Microsoft has long been known for its love of developers. But with Windows Phone 7 they’ve upped the ante. The new App Hub takes developers from square zero – not just no app, but no tools or experience – all the way through publishing the app to the Marketplace. Here is a breakdown of what you get when you join, as well as some development tips to help you get your app certified quickly.
What is the App Hub?
The App Hub is your repository for tools, information, community, and support, as well as your gateway to the Windows Phone 7 Marketplace. In order to get your app published, you’ll need to be a member of the App Hub. But even without that requirement, you have plenty of incentive for joining. The streamlined Smart Installer available here will keep your development station up to date and ready to code for either Windows Phone 7 or Xbox 360. Beginners have all the walkthroughs, tutorials, and Getting Started guides they need to jump into this market. Veterans get peer and direct support for the trickier aspects. Lastly, the app submission process itself is, short, clean and efficient.
As a Guest login, you have a lot of tools and services available. But to get the most out of the App Hub, you’ll want to get a membership. A $99 annual subscription allows you access to both the Windows Phone and Xbox 360 markets. Xbox developers get additional benefits that won’t be covered here.
Developing Your App
If you’re just getting started, the Smart Installer completes your development environment for both the Windows Phone and Xbox platforms. Using it, you can install any or all of the following tools:
- Visual Studio 2010 Express
- Windows Phone Emulator
- XNA Game Studio 4.0 add-in for Visual Studio 2010 Express
- Expression Blend for Windows Phone
- .NET Framework 4
Once your tools are in place, start learning how to code the stuff with the Windows Phone 7 Jump Start, a series of 19 excellent video tutorials of about 30 minutes each. Chase that with a deep dive down the Education Roadmap.
When developing an app you hope to get published to the Marketplace, you should know beforehand what the certification process requires of your code. Many of these requirements are obvious, i.e. “Don’t crash.” But some may surprise you, or at least run counter to your personal coding style. All of these requirements are detailed in the “Windows Phone 7 Application Certification Requirements” [http://go.microsoft.com/?linkid=9730558], but here are some highlights.
The maximum size of your XAP package (the app install file) is 400MB.
The over-the-air installation file can’t exceed 20MB (due to user data charges). Larger loads will be downloaded via wi-fi or a tethered connection to the user’s PC.
If the app is particularly large, like in excess of 50MB, the app description must include its size and the potential for additional connectivity charges.
The app must use documented Windows Phone APIs. It cannot invoke native code.
The app must implement type-safe MSIL code only.
The app must be compiled using the retail, not debug, configuration. It cannot include debug or output code.
Your manifest file will list the device functionality used in your app. This list is checked during the certification process again the intermediate code. This detection process, however, can’t discover APIs invoked using .NET reflection. So if you use this technique your app will likely fail the certification process.
The app cannot use more than 90MB of RAM unless the device has more than 256MB available.
An app in the Music + Video hub has a long list of particular requirements (which can be found in the Windows Phone 7 Application Certification Requirements).
User Interface Requirements
The app must launch within 5 seconds and be responsive to user input within 20 seconds.
In addition to the obvious “don’t crash” is the equally obvious “don’t hang.” But sometimes an extra long process can masquerade as a hang. For that reason, any time your app runs a time-consuming activity, it must provide a visual progress indicator of some sort. It must also give the user a way to cancel that activity.
When using certain functionality, like Push Notification or Location Awareness, the app must explicitly request permission from the user, as well as give the user an easy-to-find Disable option for that feature to opt-out again.
The Windows Phone 7 SDK provides some helpful functionality for creating a trial version of the app. But if you provide a trial version, it must reasonably represent full app functionality.
When using chat or chat-like functionality, your app must include some way to confirm that the user (or account owner) is at least 13 years old.
The app must shut down within 10 seconds after being terminated (when the user navigates away from app) or deactivated (when the user presses the Start button or the device times out). The app will automatically be terminated after 10 seconds but will fail certification if this happens during the cert process.
The Requirements doc has a whole section just on the Back button (Section 5.2.4):
- The Back button can only be used to navigate backwards through the app.
- Pressing Back on the first screen must exit the app.
- Pressing Back anywhere else must take the user to the previous page.
- If Back is pressed while a context menu or dialog is displayed, that menu or dialog must close, but the app must NOT navigate backward.
- For games, the Back button can pause the game with a context menu or dialog, or it can take the user to a previous screen. If the former, pressing Back again should unpause the game by closing that menu or dialog.
Text and graphics must be visible and legible regardless of the phone theme. For example your black type looks great on a white background but will disappear if the user switches to a black theme, so be prepared.
App name, version info, and tech support info should all be easily discoverable.
(Also be sure to check out Bruce Kyle’s “Seven Important Tips to Help Your App Ace Certification”.)
Publishing Your App
Once you’re ready to go to market, the app submission process should go pretty quickly, provided you’re prepared with all the necessary data. The App Hub gives you a straightforward walkthrough of the process, as well as a checklist of things you need before you submit. In addition, Den Delimarsky has a much more detailed walkthrough of app submission here on DZone. But as a heads-up, here is a brief rundown of what you’ll be asked for.
Part 1: App Information
- application name
- platform (Windows Phone 7 vs Xbox)
- language (5 languages are currently supported: English, French, Italian, German, and Spanish)
- developer notes (not published in the Marketplace)
- tester notes (special instructions for the certification testers)
- requires technical exception (check this if you would like a special exception from part of the certification requirement)
- .XAP package (the app itself)
Part 2: App Description
- application title (as it will appear in the Marketplace)
- category and sub-category
- detailed description (up to 2000 char)
- featured app description (up to 25 char – used if/when your app gets featured in the Marketplace)
- keywords (up to 5, separated by comma)
- ESRB rating and certificate (for games)
- PEGI rating and certificate (for Pan European games)
- USK rating and certificate (for German games)
- legal URL (all the fine print)
- support email
Part 3: Artwork
The exact specs for your artwork are listed on the walkthrough. But again, here are the highlights:
- All artwork must be in .png format and 96DPI.
- Large mobile app tile (used when your app is pinned to the phone’s Start menu) is 173x173
- Small mobile app tile (displayed in the phone’s app list) is 99x99
- Large PC app tile (displayed in the Marketplace on the Zune PC client) is 200x200
- Background art (optional; becomes the panorama background of the Marketplace if your app is featured – here’s a demo) is 1000x800
- Up to 8 screenshots are 480x800 each
Be sure you or your graphics person reads up on Best Practices for Art.
Part 4: Application Pricing
- trial supported (check if this is a trial version of app). Tip: you can use both trial and full licenses in your app. Detect which is which using LicenseInformation.IsTrial
- worldwide distribution (uncheck to manually select in which countries your app will be published, otherwise it will be published in all the supported markets)
- primary offer currency (currency for your asking price, ex. USD, Euros, etc)
- application price (minimum for a paid app is $.99, max is $499.99)
- all prices (individual prices if you’re setting foreign markets individually)
Note: your $99 annual subscription includes the ability to submit as many paid apps as you want to Windows Phone Marketplace. However, you can only submit up to five free apps at no cost. After that, you’ll be charged $19.99 USD per app.
Part 5: Submit
Along with the option to review your application details one more time, you can enable the option to automatically publish the app to the Marketplace if and when it passes certification.
Tip: if your app supports multiple languages then be sure to incorporate all of them into a single app. When submitting an app, each XAP package is evaluated and certified individually. So you potentially increase your approval time unnecessarily by submitting a different app for each language.
Once you submit your app to the Marketplace, what’s next? Well, first you wait. How long you wait depends on the complexity of your app. Some sail through within hours. Microsoft suggests up to 5 business days. Cruise the dev forums and you’ll see that some apps have taken longer. Keep an eye on your inbox and your App Hub Dashboard for notification.
Your end goal is to have the app signed. So assuming it passes certification, your app will automatically get signed with the Authenticode cert registered to you. This overwrites any signatures currently in your .xap file.
After that, if yours is a paid app, then get ready for that money bath (hey, hope for the best, prepare for the worst). Here’s how the money thing works with Microsoft:
- The sale only counts if Microsoft actually collects the money.
- Collection happens 15 to 30 days for credit card billing, 90 to 120 days for mobile operator billing.
- You get 70% of the sales price, minus sales tax, use tax, or VAT/GST taxes.
- Payments go directly into your bank account (which is registered through your App Hub profile).
- You pay all your own taxes (careful with that).
When it comes time to update your app, you can submit as many updates as you want at no cost, but you can’t charge for them. When the app goes live, Microsoft will automatically push a notification to your users, who have the option to install it or not. Updates do not count as an additional certification event unless the update fails. In other words, updates to existing apps are “free” as long as the update passes certification.