As part of the Telerik “Q1.2012 Beta” package for Windows Phone we are releasing a new set of "Application Building Blocks" components. You can find more info on the idea of Application Building Blocks here

Overview

Part of the application building blocks are the RadTrialApplicationReminder and RadTrialFeatureReminder components. With these 2 components developers can implement and adjust the trial functionality of their applications. You can implement application-wide trial notifications, or feature-specific trial notifications, with a lot of configurable options. Both components support time-based and usage-based trial restrictions. Here is the list of the implemented features:

  • Optional free period (time based or usage based), when no trial reminders will be displayed,
  • Reminders recurrence – after the free usage is expired trial reminders can be configured to be displayed on a given period/usage,
  • Trial ended notification message,
  • Option for end-users to skip trial reminder recurrence (trial-ended message is always displayed!),
  • Configurable message box content

The timeline below summarizes the logic of reminder messages display:
Implementing Trial Functionality for WindowsPhone/WinRt
Here is how a sample trial ended notification looks like:
Implementing Trial functionality for WindowsPhone/WinRt apps

Implementing Application wide trial functionality

Using the trial reminder is quite simple and is only a matter of configuration plus one line of code for notification.
1. Define and configure the application trial reminder in your App class:

private static RadTrialApplicationReminder trialReminder;
  public static RadTrialApplicationReminder TrialReminder
  {
   get
   {
    if (trialReminder != null)
    {
     return trialReminder;
    }
    return new RadTrialApplicationReminder()
    {
     AllowedTrialUsageCount = 5, // maximum number of app runs until trial is expired
     FreeUsageCount = 2, // number of app runs when no reminder will be displayed
     OccurrenceUsageCount = 1 // reminder will be displayed on every run after the free usage is over
    };   
   }
  }

2. Notify end users for trial when needed:

App.TrialReminder.Notify();

This code is best to be placed in the first page of your application.

3. Disabling application functionality when trial is expired:

PaidButton.IsEnabled = !App.TrialReminder.IsTrialExpired;

You can use the IsTrialExpired property to disable specific functionality in your applications.

Implementing trial reminder for specific paid feature

There are many real world scenarios when you will want to have trial for a specific paid feature(s) and to leave the usage for the rest of application completely free. In this case you can use the RadTrialFeatureReminder. This component has the same logic for displaying the reminder messages as the ApplicationReminder, with two additional properties – UsageCount and FeatureId.
Here is how to use the trial feature reminder:
1. Define and configure the reminder:

paidFeatureReminder = new RadTrialFeatureReminder()
   {
    FreeUsageCount = 1,
    OccurrenceUsageCount = 2,
    AllowedTrialUsageCount = 7,
    FeatureId = 1
   };

2. When feature will be executed:

private void Button_Click(object sender, RoutedEventArgs e)
  {
   paidFeatureReminder.UsageCount++;
   paidFeatureReminder.Notify();
 
   if (paidFeatureReminder.IsTrialExpired)
   {
    return;   
   }  
 
   // perform the feature actions
    
  }

As you can see with these two components you can implement very easy and in a flexible manner the trial experience of your application.
I hope that this component will be very useful for you - please give it a try during the beta period and let us know if you have suggestions for enhancements.

You can also find me on twitter @valiostoychev – I’ll be happy to discuss any feedback you have!


About the Author

Valio Stoychev

Valentin Stoychev (@ValioStoychev) for long has been part of Telerik and worked on almost every UI suite that came out of Telerik. Valio now works as a Product Manager and strives to make every customer a successful customer.

 

Comments