エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Windows Phone アプリでの試用版の実装方法

2013/12/05

対象: Windows Phone 8 | Windows Phone OS 7.1

 

このトピックでは、Windows Phone アプリで試用版を実装する方法について説明します。このトピックの情報は、主として、Windows Phone OS 7.1 または Windows Phone OS 7.0 で実行するように設計されたアプリに適用されます。Windows Phone 8 だけで実行するアプリの場合は、Windows Store アプリに対してもサポートされている Windows ランタイム バージョンの LicenseInformation クラスを代わりに使用して、試用版をアプリに実装してみてください。この方法の詳細については、Windows Phone 試用版サンプルおよび Windows Store に関するトピック「アプリの試用版の作成」を参照してください。

試用版の目的は、ユーザーがアプリの購入を決定する前にアプリを試す機会を提供することです。試用版では一般的に、一部の機能の無効化、ゲーム内のレベルの無効化、アプリケーションの使用期限の設定などによって、限定版アプリを提供します。アプリに実装する制限は完全に自分で決めることができます。このトピックでは、試用モードで機能に制限のある (一部の機能が無効になっている) 簡単なアプリを作成する方法を示します。アプリを実行するモードの決定は、LicenseInformation クラスを使用して行います。試用版の実装方法の詳細、およびここで説明しているアプリの詳細がわかる完全なサンプルについては、試用版アプリケーション サンプルを参照してください。

このトピックは、次のセクションで構成されています。

 

このセクションでは、試用版でアプリのデモンストレーションを行うための UI を作成します。これは Windows Phone アプリです。アプリを起動すると、アプリの現在のライセンスが確認されます。アプリが試用ライセンスの場合は、一部の機能が無効になります。アプリがフル ライセンスの場合は、すべての機能が有効になります。アプリの実際のライセンス情報は、Store に公開された後にのみ使用可能になります。したがって、試用版をテストするには、ライセンス検出をシミュレートする必要があります。この操作は、アプリをデバッグ モードで実行しているときに、アプリの IsTrial プロパティをプログラムにより設定することによって実行します。アプリの公開後、アプリの IsTrial プロパティは LicenseInformation.IsTrial プロパティを調べることによって設定されます。

アプリのユーザー インターフェイスを作成するには

  1. Visual Studio で、[ファイル] メニューの [新しいプロジェクト] をクリックして新しいプロジェクトを作成します。

  2. [新しいプロジェクト] ウィンドウが表示されます。[Visual C#] のテンプレートを展開し、[Windows Phone] のテンプレートを選択します。

  3. [Windows Phone アプリ ] テンプレートを選択します。[名前] に選択した名前を入力します。

  4. [OK] をクリックします。新しいプロジェクトが作成され、Visual Studio のデザイナー ウィンドウに MainPage.xaml が表示されます。

  5. MainPage.xaml の中で、"LayoutRoot" という名前の Grid の XAML コードを削除し、次に示すコードで置き換えます。

    
            <Grid x:Name="LayoutRoot" Background="Transparent">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
    
            <!--TitlePanel contains the name of the application and page title.-->
            <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
                <TextBlock x:Name="ApplicationTitle" Text="Trial Application Experience" Style="{StaticResource PhoneTextNormalStyle}" Margin="5"/>
                <TextBlock x:Name="PageTitle" Text="main page" Style="{StaticResource PhoneTextTitle1Style}" Margin="5"/>
            </StackPanel>
    
            <!--ContentPanel - place additional content here-->
            <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
                <Grid.RowDefinitions>
                    <RowDefinition Height="200"/>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>
                <StackPanel Grid.Row="0" Orientation="Horizontal"
                            HorizontalAlignment="Center" VerticalAlignment="Center">
                    <TextBlock Text="License:" FontSize="{StaticResource PhoneFontSizeExtraLarge}" />
                    <TextBlock x:Name="tbTrialStatus" FontSize="{StaticResource PhoneFontSizeExtraLarge}" />
                </StackPanel>
                <TextBlock Grid.Row="1" Text="My Application Features" HorizontalAlignment="Center"/>
                <StackPanel Grid.Row="2"  Orientation="Horizontal" HorizontalAlignment="Center">
                    <Button Content=" A" Height="78" Width="100" x:Name="btnFeatureA" Click="btnFeatureA_Click"/>
                    <Button Content=" B" Height="78" Width="100" x:Name="btnFeatureB" Click="btnFeatureB_Click"/>
                    <Button Content=" C" Height="78" Width="100" x:Name="btnFeatureC" Click="btnFeatureC_Click"/>
                </StackPanel>
                <Button Grid.Row="3" x:Name="btnBuyApplication" Content="Buy the Application" Click="btnBuyApplication_Click" Height="78"/>
            </Grid>
        </Grid>
    
    

    上記の XAML コードでは、次のスクリーンショットのような簡単なユーザー インターフェイスが作成されます。

    Screenshot for Silverlight Trial Application

    アプリには 3 つのボタンがあり、それぞれがアプリの機能を表します。UI には、現在のライセンス情報とアプリを購入するためのボタンを含むステータス テキストも含まれています。前のコードとスクリーンショットは、試用版作成の主要な概念を説明する基本的な例として使用できます。次のセクションでは、各ボタンのイベント ハンドラーを定義します。

このセクションでは、LicenseInformation オブジェクトを使用して、アプリの現在のライセンスを確認します。アプリの実際のライセンス情報は、Store に公開された後にのみ使用可能になります。したがって、試用版をテストするには、ライセンス検出をシミュレートする必要があります。この操作は、アプリをデバッグ モードで実行しているときに、アプリの IsTrial プロパティをプログラムにより設定することによって実行します。アプリの公開後、アプリの IsTrial プロパティは LicenseInformation.IsTrial プロパティを調べることによって設定されます。

Direct3D アプリの試用ライセンスを確認するには、CurrentApp クラスの LicenseInformation プロパティによって返される LicenseInformation インスタンスの IsTrial プロパティを確認します。

アプリの試用ライセンスを確認するには

  1. App.xaml.cs を開き、次の using ディレクティブをページの一番上に追加します。

    
    using Microsoft.Phone.Marketplace;
    
    
  2. App クラスで、次のローカル静的変数を宣言します。LicenseInformation クラスを使用すると、アプリが試用ライセンスで実行されているかどうかを確認できます。

    
         private static LicenseInformation _licenseInfo = new LicenseInformation();
    
    
  3. App.xaml.cs の同じ App クラスで、次の読み取り専用のプロパティとローカル変数を追加します。このプロパティは、アプリの実行中にライセンス情報をキャッシュするために使用されます。アプリは、現在のライセンス情報を確認する必要があるたびにこのプロパティを使用します。

    
            private static bool _isTrial = true;
            public bool IsTrial
            {
                get
                {
                    return _isTrial;
                }
            }
    
    
  4. 次のセクションでは、Application_Launching および Application_Activated イベント ハンドラーでライセンス情報を確認します。このロジックは 2 つの場所で使用されるので、便宜上このロジックを独自のメソッドにラップします。App.xaml.cs にある App クラスで、次のメソッドを追加します。

    
            /// <summary>
            /// Check the current license information for this application
            /// </summary>
            private void CheckLicense()
            {
                // When debugging, we want to simulate a trial mode experience. The following conditional allows us to set the _isTrial 
                // property to simulate trial mode being on or off. 
    #if DEBUG
                string message = "This sample demonstrates the implementation of a trial mode in an application." +
                                   "Press 'OK' to simulate trial mode. Press 'Cancel' to run the application in normal mode.";
                if (MessageBox.Show(message, "Debug Trial",
                     MessageBoxButton.OKCancel) == MessageBoxResult.OK)
                {
                    _isTrial = true;
                }
                else
                {
                    _isTrial = false;
                }
    #else
                _isTrial = _licenseInfo.IsTrial();
    #endif
            }
    
    

    アプリがデバッグ モードで実行されるかどうかに応じて、前のメソッドは 2 つのコード パスで構成されます。デバッグ モードでは、条件付きコンパイル ディレクティブ #if Debug#else ディレクティブの間のコードが実行されます。ユーザーは、試用モードをシミュレートするかどうかをたずねられます。ユーザーが [OK] を選択した場合、_isTrial 変数が true に設定され、それ以外の場合は false に設定されます。アプリがリリース モードでビルドされた場合、 #else#endif の間のコードが実行され、LicenseInformation オブジェクトの IsTrial プロパティを調べることによって _isTrial 変数が設定されます。

  5. アプリが起動または再開されるたびにアプリのライセンスを確認する必要があります。これは、Application_Launching および Application_Activated イベント ハンドラーでライセンス情報を確認することによって実行されます。App.xaml.csApplication_Launching イベント ハンドラーを次のコードで置き換えます。

    
            private void Application_Launching(object sender, LaunchingEventArgs e)
            {
                CheckLicense();
            }
    
    
  6. App.xaml.csApplication_Activated イベント ハンドラーを次のコードで置き換えます。

    
            private void Application_Activated(object sender, ActivatedEventArgs e)
            {
                CheckLicense();
            }
    
    

このセクションでは、アプリの現在のライセンスに関する情報を使用して、試用モードのアプリを制限します。アプリの制限方法は作成者が決めることができます。この例では、試用モードのアプリは、アプリの機能を表す UI のボタンを無効にすることによって制限されます。さらに、Show メソッドを呼び出すことによって、ユーザーが Store を通じてアプリケーションを購入するためのボタンを UI に表示します。このアプリは Store に公開されていないので、Show を呼び出すとエラーになります。これは予測どおりの動作です。

現在のアプリのライセンス情報を基にして機能を有効または無効にするには

  • MainPage.xaml.cs 分離コード ファイルで、次のメソッドを追加します。

    
           protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
            {
                base.OnNavigatedTo(e);
    
                if ((Application.Current as App).IsTrial)
                {
                    btnBuyApplication.Visibility = System.Windows.Visibility.Visible;
                    btnFeatureC.IsEnabled = false;
                    tbTrialStatus.Text = "Trial";
                }
                else
                {
                    btnBuyApplication.Visibility = System.Windows.Visibility.Collapsed;
                    btnFeatureC.IsEnabled = true;
                    tbTrialStatus.Text = "Full";
                }
            }
    
            private void btnFeatureA_Click(object sender, RoutedEventArgs e)
            {
                MessageBox.Show("Feature A");
            }
    
            private void btnFeatureB_Click(object sender, RoutedEventArgs e)
            {
                MessageBox.Show("Feature B");
            }
    
            private void btnFeatureC_Click(object sender, RoutedEventArgs e)
            {
                MessageBox.Show("Feature C");
            }
    
    

    前のコードでは、ユーザーがこのページに移動するたびに現在のライセンス情報を調べるために OnNavigatedTo メソッドがオーバーライドされます。前のセクションで定義した App クラスの IsTrial プロパティが調べられ、アプリが試用モードで実行されているかフル ライセンスで実行されているかが確認されます。このプロパティが true を返した場合は、アプリは試用モードで実行されています。試用モード時に機能を無効化するシミュレーションを行うために btnFeatureC ボタンが無効になります。ユーザーがアプリを購入できるように btnBuyApplication ボタンも表示されます。最後に、ライセンスの状態が tbTrialStatus TextBlock で設定されます。

    IsTrial プロパティが false の場合は、すべての機能が有効になります。ユーザーがアプリのフル ライセンスを持っているので btnBuyApplication ボタンは非表示になります。最後に、ライセンスの状態が tbTrialStatus TextBlock で設定されます。3 つのクリック イベントは、ユーザーが UI の機能ボタンの 1 つをクリックした際にメッセージを表示するために使用されます。

このセクションでは、ユーザーがアプリを購入できるように、MarketplaceDetailTask を使用してユーザーを Store のアプリに誘導します。

ユーザーにアプリの購入を案内するには

  1. MainPage.xaml.cs を開き、次の using ディレクティブをページの一番上に追加します。

    using Microsoft.Phone.Tasks;
    
    
  2. MainPage.xaml.cs 分離コード ファイルで MainPage クラスの一番上に次の変数を追加します。

    
            // Declare the MarketplaceDetailTask object with page scope
            // so we can access it from event handlers.
            MarketplaceDetailTask _marketPlaceDetailTask = new MarketplaceDetailTask();
    
    
  3. MainPage.xaml.cs 分離コード ファイルで、次のメソッドを追加します。

    
            private void btnBuyApplication_Click(object sender, RoutedEventArgs e)
            {
                _marketPlaceDetailTask.Show();
            }
    
    

    UI で btnBuyApplication ボタンがクリックされると、前のコードが Store クライアント アプリを表示し、指定された製品の詳細ページが表示されます。ユーザーはアプリを購入することができます。この例では、アプリは Store に公開されていません。このため、_marketPlaceDetailTask.Show() を呼び出すとエラーが表示されます。このエラーのエラー コードが 805a0941 である場合、呼び出しは成功しており、アプリが公開されたときに正常に動作します。アプリが公開されると、Show がアプリの固有の ID を自動的に検出し、Store クライアント アプリの正しい詳細ページを起動します。

アプリを実行するには

  1. デバイスまたはエミュレーターで、[デバッグ] メニューの [デバッグ開始] をクリックしてアプリを実行します。

    メモメモ:

    試用モードのシミュレーションを選択するオプションは、アプリがデバッグ モードで実行されるときにのみ使用できます。これは、アプリのリリース ビルドで試用モードのシミュレーションが実行され、このテスト機能が有効のままで誤って Store に公開されるのを防ぐためです。

  2. アプリを起動すると、メッセージ ボックスが表示されます。試用モードをシミュレートするには、[OK] をクリックします。

  3. アプリのメイン ページで、[License] フィールドが [Trial] に設定され、[Feature C] ボタンが無効になっていることを確認します。

  4. [Buy the Application] ボタンをクリックします。Store クライアント アプリを開くことが試行されます。

  5. 次の画像のようなエラー ダイアログが表示されます。これは、Store クライアント アプリでアプリが正常に開かれたことを示します。公開されたアプリでは、このエラーは発生せず、アプリを購入できる Store のアプリの詳細ページが表示されます。

    MarketplaceDetailTask.Show() error
  6. エラー ダイアログで [閉じる] をクリックします。アプリが再開されます。

  7. フル ライセンスをシミュレートするようにアプリを実行するには、この手順の手順 2. で表示される MessageBox で [Cancel] をクリックします。または、[デバッグ] メニューの [デバッグなしで開始] をクリックしてアプリを実行できます。このモードでは、[Buy the Application] ボタンは非表示になり、[Feature C] ボタンは有効になります。

表示:
© 2014 Microsoft