Posted by: wmdevasia | October 15, 2010

Things to watch out for when submitting apps for certification

To ensure smooth certification of apps make sure to take a look at the Certification Documentation here:
http://go.microsoft.com/?linkid=9730558

The MSDN docs, especially the ‘Fundamental Concepts’ docs here:
http://msdn.microsoft.com/en-us/library/ff967549(v=VS.92).aspx

And the Silverlight for Windows Phone Technical Whitepaper here:
http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=3a8636bf-185f-449a-a0ce-83502b9ec0ec

Tombstoning – make sure the application tombstones correctly
Best way to test tombstoning is using the home button to exit the app then press the back button to re-hydrate the app. Wait various amounts of time between when you press the home button and press the back button. This should also be done as a stress test by tombstoning/rehydrating multiple times. This should be repeated on every page of the app. Another key thing is to also walk back up the backstack when you return. Sometimes the initial page will come back but the app will crash one level up.
Your application should correctly serialize its data and deserialize it back when it re-launch. In particular, make sure:
• Data should reload
• Data in any forms or controls is preserved
More info: http://msdn.microsoft.com/en-us/library/ff769557(v=VS.92).aspx

Performance
Application should be response to user input at all times. In particular, application should use the following best practices:
• Do not use the regular ProgressBar. Use the Performance Progress Bar
• For smaller lists or with varying item sizes, DeferredLoadListBox (and StackPanel)
• Load the images in the background as mentioned in LowProfileImageLoade
• If you have nested listboxes Confessions of a ListBox groupie
• Always use httpwebrequest instead of WebClient
• Use manipulation events to handle gestures as far as possible.
• Do as little as possible in app/page constructors and the OnNavigatedTo event handler. Running significant code in here (particularly reading large datasets from IsoStorage or the cloud) will hamper the UI. On initial launch, this may cause your app to not beat the 10 second limit.

Memory Usage
The application must not exceed 90 MB of RAM usage. The DeviceExtendedProperties class can be used to query the amount of memory on the device and modify the application behavior at runtime to take advantage of additional memory. More info on diagnosing out-of-memory issues: http://dotnetprofessional.com/blog/post/2010/09/27/Debug-Memory-Counter-for-Windows-Phone-7.aspx

Banding – images on the phone are 16-bit
The phone emulator included with the developer tools supports a 24bit color palette, Windows Phone devices support a 16-bit color palette. This means that some images will appear to have low quality on device only
Make sure:
• Avoid using gradients or images with gradual color changes
• When exporting images, export them to a 16-bit color space
Home button – don’t use them
• Windows Phone application should not have Home buttons. After a user has used a Home, they can be confused by the expected behavior of the Back button
Splashscreens and Launching
• Don’t use the default splashscreenimage.jpg. Use one specific to application.
• Application need to load to their first page quickly. Application that fail to load in less than 10 secs, while be terminated by the OS
• If your application uses loading or intro pages, they should not be included in the backstack (i.e. they should be skipped when the user hits the back button)
• Users should be able to exit the application by hitting ‘back’ from the apps landing page
Panorama or Pivot Controls
• Don’t use controls that can pan or scroll inside an panorama or pivot control. For example, putting a Map control inside a Panorama control can make it difficult to use the Panorama control.
• Panorama controls should not have ApplicationBars
• When users tap on controls they should get some kind of feedback. For example, use the Silverlight for Windows Phone Toolkit. http://silverlight.codeplex.com/releases/view/52297 Light theme and highlight color
• The app should work correctly in the light theme. Text should display correctly and be readable
• Apps should not assume that they know all the themes. There is is an MO specified color, that may be present
• More info: http://msdn.microsoft.com/en-us/library/ff402557(VS.92).aspx

Location opt-out
• Applications that use Location API must ask users the first time they want to use it.
Contact information
• Application must provide, at a minimum, email contact information
Landscape/ orientation
• If an application support both Landscape and Portrait, it must re-align controls appropriately
Start tile
• Must have a start tile and it should be of high quality
Music playing
• If an application plays media, it should pause media in the queue and resume it when it is finished playing media
Network conditions
Poor network conditions
o In particular look for ListBox performance in low bandwidth situations. ListBox should load data as is becomes available. More info: http://blogs.msdn.com/b/ptorr/archive/2010/10/12/procrastination-ftw-lazylistbox-should-improve-your-scrolling-performance-and-responsiveness.aspx No network
o If there is no network connection, the application should provide an appropriate warning You can use airplane mode to test this.
o Verify that the app can still be navigated when there is no network available. Although there may be no data coming in the perf and navigation of the app should still be OK. Also messaging should be shown to the user on what is wrong.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Categories

%d bloggers like this: