michielpost.nl

Check your Windows Phone application capabilities

13-12-2011

So you created a nice Windows Phone application, published it to the Marketplace and then you see this:

Your app uses the camera? Push notifications? Phone Identity? No way! My app does not use that. Why does it say so?
Of course, you should have run the Marketplace Test Kit before publishing your app. It will tell you exactly what capabilities your app needs. But we all forget to do that sometimes.

 

Why is this a problem?
Users might not trust your application. They will think your app does secrect stuff you're not telling them. Why else are all these capabilities listed for a simple application?

When the capability ID_CAP_LOCATION is added, users always get a dialog window where they have to push the allow button for your application to use location data. If you're not using it, this can scare of users. It might not even pass marketplace verification, because apps that use location always need some sort of privacy statement.

What or who is adding these capabilities?
Why does it say your application uses the Camera functionality? Or Push notifications? Or Phone Identity?
There's a big chance you're using a third party library which needs that capability.

When you start a new Windows Phone project and run the Marketplace Test Kit, only 1 capability is needed:
ID_CAP_NETWORKING

However, when you start adding commonly used libraries, there are more capabilities needed.

How to see the capabiltiies your app uses?
Start the Marketplace Test Kit, by right clicking on your Windows Phone Application project in Visual Studio. Click "Open Marketplace Test Kit".
Choose Automated Tests and click Run Tests.
Note: set your build configuration to Release mode.

Tip for Windows Phone library developers:
Split your libraries based on capabilities. So no unnecessary capabilities are added to applications.
And tell your users which capabilities are added when using your library!

List of extra capabilities needed per library:

Silverlight Toolkit
- None, Thanks!

Coding4Fun Toolkit
- ID_CAP_IDENTITY_DEVICE

Bewise.Phone
- ID_CAP_WEBBROWSERCOMPONENT

Wp7Contrib
Is nicely seperated over multiple assemblies.
Adding the "Core" NuGet package adds:
- ID_CAP_IDENTITY_DEVICE

Wp7Contrib.All package:
Depends on lots of other assemblies. You end up with these capabilities:
- ID_CAP_IDENTITY_DEVICE
- ID_CAP_LOCATION
- ID_CAP_WEBBROWSERCOMPONENT
- ID_CAP_PHONEDIALER

NorthernLights
Depends on the Silverlight Control Toolkit, but adds no extra capabilities.

WindowsPhoneEssentials
- ID_CAP_WEBBROWSERCOMPONENT
- ID_CAP_IDENTITY_DEVICE

Wp7nl
- ID_CAP_ISV_CAMERA
- ID_CAP_PUSH_NOTIFICATION

Wp7nl.External
- ID_CAP_PUSH_NOTIFICATION

Also includes Phone7.Fx:

Phone7.Fx
Warning: adds camera capability ID_CAP_ISV_CAMERA. Not detected by marketplace test kit, but it's added when uploading to the marketplace.
See this post: http://phone7.codeplex.com/discussions/284058

So make sure you know which libraries you are using and what they are doing to your application capabilities.

Comments


venetasoft 14-03-2012
The trick to "forse" the marketplace routine to detect a "missing" cabalibility is to add a "foo" declaration: public partial class App : Application { PhotoCamera cam = null; ....


Thomas 15-01-2013
Thanks for the listing, this was very helpful!


USA 12-01-2014
pbugznjdijfmqptu, <a href="http://www.drbuwxzfqq.com/">oxnqjmbkhk</a> , [url=http://www.krypqxvebp.com/]uaxbscqteg[/url], http://www.hbhlnjewlu.com/ oxnqjmbkhk


New Comment

Name
E-mail (not published)
Comment
Enter the code shown: