Windows Phone 7のアプリケーションにTrial版の機能を搭載

Windows Phone 7のアプリケーションにTrial版の機能を搭載することができます。
プログラムの中でTrial版を判断するには、Microsoft.Phone.dllアセンブリMicrosoft.Phone.Marketplace.LicenseInformationを利用します。LicenseInformationはIsTrialというメソッドを持っているのでこれを使います。

var license = new Microsoft.Phone.Marketplace.LicenseInformation();
if (license.IsTrial())
{
    MessageBox.Show("Trial");
}
else
{
    MessageBox.Show("Not Trial");
}

これだけでTrial版の判定ができます。マーケットプレースからTrial版としてインストールしたときはtrueを、アプリケーションを購入したときはfalseを返します。
しかし、このメソッドはマーケットプレースに登録しなければ動作を確認することができません。それでは使い勝手が悪いということでライブラリを作成してくれている方がいます。
Affordable Hard Plastic Wading Pool — Amazing Swimming Pool
こちらのTrialManagerを利用するとApp.xamlを書き換えるだけでローカルとマーケットプレースで同じソースコードを利用し切り替えも簡単に行えるようになります。判定するメソッドはTrialManager.IsTrial()です。
例えば、利用回数で制限を掛ける場合は、

<Application.ApplicationLifetimeObjects>
    <trial:TrialManager RunAsTrial="True" Expired="TrialManager_Expired" >
        <trial:TrialManager.ApplicationPolicy>
            <trial:UsageExpirationPolicy MaxUsage="5"/>
        </trial:TrialManager.ApplicationPolicy>
    </trial:TrialManager>
</Application.ApplicationLifetimeObjects>

そしてアプリケーションが起動するときに、

(TrialManager.Current.ApplicationPolicy as UsageExpirationPolicy).UsageCount++;

このコードを追加して利用回数をインクリメントします。
このように定義すると5回の利用に制限をかけることができます。


あるいは利用期間で制限を掛ける場合は、

<trial:TrialManager RunAsTrial="True" Expired="TrialManager_Expired" TimerInterval="00:05:00" >
   <trial:TrialManager.ApplicationPolicy>
       <trial:TimeExpirationPolicy TrialDuration="01:00:00" Mode="Lifetime" />
   </trial:TrialManager.ApplicationPolicy>
</trial:TrialManager>

このように記述すると利用できる時間が1時間になります。


Trial版の制御はすべて開発者にゆだねられているので好きなように制限をかけることができます*1
ユーザーにとってTrial版があるとアプリケーションをインストールする敷居が低くなります。開発者はユーザーにアプリケーションを利用してもらうためにTrial版をうまく活用していきたいですね。

*1:こちらを参考。Windows Blog