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:
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:
- None, Thanks!
Is nicely seperated over multiple assemblies.
Adding the "Core" NuGet package adds:
Depends on lots of other assemblies. You end up with these capabilities:
Depends on the Silverlight Control Toolkit, but adds no extra capabilities.
Also includes 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.