Creating trial apps for Windows Phone 8
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
You can design and implement a trial mode of your app in the Windows Phone Store. Experience shows that users enjoy trying out new products and are much more likely to buy an app if they have been able to try it before buying.
The Windows Phone app platform makes it easy for you to provide trial and full versions of your apps within a single XAP package. Users who want to buy an app they are trying out can seamlessly access the familiar Store purchase experience from within the trial app.
There are no restrictions around how you design the trial experience for your app. You can determine the extent of functionality that you want to expose to your user, whether the trial mode is of a limited duration, or how you want to encourage your user to buy your app. You can also determine whether an app’s data and state are maintained if a user chooses to purchase a trial app.
When you submit your trial mode app to the Store, check the Trial Application box and the Store client will display a Try option view on the app’s detail page.
This topic contains the following sections.
To implement a trial mode for your app you must define and implement how trial behavior differs from full mode behavior. To run in the correct mode when executed by a user, your code must determine whether the app is running with trial or with full execution rights. To provide a purchase path your code must launch the Store client.
The trial/full state of a user’s execution rights for an app are maintained in a license. When a user tries your app, it is installed on their phone along with a license that grants them the right to try the app. Trial licenses do not expire but when a user purchases an app they have been trying a full license is downloaded. The full license replaces the trial license and grants full rights to the app.
To determine whether the license in place at run time is trial or full execution rights, Windows Phone supplies methods that return true if the app is running under a trial license and false if the app has been purchased and is running under a full license.
To allow a trial user to purchase your app Windows Phone supplies methods that open the Store client to the app’s purchase page.
XNA Framework developers should use the GamerServices.Guide class to build your try and buy experience. Use the Guide.IsTrialMode property to get current license mode and the Guide.ShowMarketplace method to initiate the purchase experience.
Windows Phone apps can use the XNA Framework methods described above or use the IsTrial() method to get current license state directly, and the Show() method of the MarketplaceDetailTask class to initiate the purchase experience. To understand the trade-offs between choices see the Trial mode testing overview section below.
Determining trial state and navigation to the Store for purchase must be simulated by your code when you are testing or debugging your app. Methods for this functionality do not work in debug or testing mode because required licensing and Windows Phone Store ID properties are not created until after your app is complete and submitted.
XNA Framework apps should always use the GamerServices.Guide class for these functions. This class has built in trial and purchase simulation features. For more information, see Simulating Trial Mode for Marketplace Content.
Windows Phone apps can also use the GamerServices.Guide class or implement their own custom behavior. Using the GamerServices.Guide calls in a Windows Phone app may save some work simulating trial license state during debug and testing. Using the LicenseInformation.IsTrial and MarketplaceDetailTask.Show methods allows more opportunity to customize your trial testing and debugging methods.
This section describes the best practices you should consider when you create a trial app.
Cache license state if you check trial state frequently. Note that the IsTrial() method and the Guide.IsTrialMode property are designed to be event-driven. A typical call takes approximately 60 milliseconds or more.
XNA apps should always use GamerServices.Guide class to implement trial mode.
When setting the Guide.SimulateTrialMode flag to TRUE, always enclose it in an #if DEBUG/#endif statement.
Check the IsTrial() state when your app loads or resumes.
You can avoid some potential trial design flaws especially if you cache the IsTrial() state.
Do not rely on usage time limited trials to protect your app’s value.
Typically, it is best to protect the value of your full mode app by limiting trial access to key code paths. A user may uninstall and retry an app without restriction so a trial design that offers full mode behavior for a limited time provides only inconvenience as a barrier to reuse.
Provide a way for users to buy your trial app before the end-of-trial.
Make sure that you help users understand why they want to buy your app, perhaps, by implementing your trial limit at a point in the app where they will naturally want more.
For example, let users experience the first level of game play and require them to purchase the app to play higher levels, retain points, or to connect to a gaming service.