Windows Phone 7 開發 31 日談——第23日:提供試用版應用程式

l_serein發表於2012-11-08

By Jeff Blankenburg

本文是 “Windows Phone 7 開發 31 日談” 系列的第23日。

    昨天,我寫了如何將遊戲新增到電話的遊戲中心中。今天,我會向你展示為應用程式新增試用內容是多麼簡單。例如,假設你建立了一個50關的遊戲。可能你想讓使用者能免費體驗前5關,但要想玩後面的,他們就需要購買這個遊戲。本文就像你展示如何做到。

 

使用LicenseInformation類

    通過向我們的頁面中新增Microsoft.Phone.Marketplace程式集和相應的名稱空間,就可以訪問LicenseInformation類了,它直接與程式的“付費”狀態相關。

[c-sharp] view plaincopy
  1. using Microsoft.Phone.Marketplace;  

下一步是真正地使用LicenseInformation類,來建立一個例項:

[c-sharp] view plaincopy
  1. LicenseInformation li = new LicenseInformation();  

最後,LicenseInformation有一個非常棒的返回布林值的方法叫IsTrial(),毫無懸念,它允許我們檢測程式是否處於試用狀態。你可以很方便地將它用於一個if語句,就像這樣:

[c-sharp] view plaincopy
  1. if (!li.IsTrial())  
  2. {  
  3.     //Do something that only paid users can do.  
  4. }  
  5. else  
  6. {  
  7.     //Do something that all users, trial or paid, can do.  
  8. }  

測試試用模式

    不幸的是,沒有一種用來在試用和已付款狀態間切換的內建機制。不過這處理起來很簡單。我使用了在App.xaml.cs檔案中相同的if語句。用它來檢測你是否在除錯,如果是,建立一個被我叫做“trialMode”的IsolatedStorageSetting。

下面是整個App()方法,包括App.xaml.cs檔案自動生成的程式碼。在下面的例子中,我將trialMode設為了TRUE。當你測試“已付費”模式時要將它關閉。

[c-sharp] view plaincopy
  1. IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;  
  2. public App()  
  3. {  
  4.     // Global handler for uncaught exceptions.   
  5.     UnhandledException += Application_UnhandledException;  
  6.     settings["trialMode"] = false;  
  7.     // Show graphics profiling information while debugging.  
  8.     if (System.Diagnostics.Debugger.IsAttached)  
  9.     {  
  10.         settings["trialMode"] = true;  
  11.                   
  12.         // Display the current frame rate counters.  
  13.         Application.Current.Host.Settings.EnableFrameRateCounter = true;  
  14.         // Show the areas of the app that are being redrawn in each frame.  
  15.         //Application.Current.Host.Settings.EnableRedrawRegions = true;  
  16.         // Enable non-production analysis visualization mode,   
  17.         // which shows areas of a page that are being GPU accelerated with a colored overlay.  
  18.         //Application.Current.Host.Settings.EnableCacheVisualization = true;  
  19.     }  
  20.     // Standard Silverlight initialization  
  21.     InitializeComponent();  
  22.     // Phone-specific initialization  
  23.     InitializePhoneApplication();  
  24. }  

回顧一下早先的程式碼,我需要修改if語句來處理這個新的IsolatedStorageSettings值。這次我包含了整個MainPage.xaml.cs檔案,所以結合上下文你可以看到所有的內容。

[c-sharp] view plaincopy
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Net;  
  5. using System.Windows;  
  6. using System.Windows.Controls;  
  7. using System.Windows.Documents;  
  8. using System.Windows.Input;  
  9. using System.Windows.Media;  
  10. using System.Windows.Media.Animation;  
  11. using System.Windows.Shapes;  
  12. using Microsoft.Phone.Controls;  
  13. using Microsoft.Phone.Marketplace;  
  14. using System.IO.IsolatedStorage;  
  15. namespace Day23_UsingTrial  
  16. {  
  17.     public partial class MainPage : PhoneApplicationPage  
  18.     {  
  19.         LicenseInformation li = new LicenseInformation();  
  20.         IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;  
  21.           
  22.         // Constructor  
  23.         public MainPage()  
  24.         {  
  25.             InitializeComponent();  
  26.             if (!li.IsTrial()||(bool)settings["trialMode"] == false)  
  27.             {  
  28.                 //Do something that only paid users can do.  
  29.             }  
  30.             else if (li.IsTrial() || (bool)settings["trialMode"] == true)  
  31.             {  
  32.                 //Do something that all users, trial or paid, can do.  
  33.             }  
  34.         }  
  35.     }  
  36. }  

這就是所有你需要做的,當然這並不是“最好的”處理這種問題的方法,但對我來說它的確可以工作。如果誰有什麼好的方法,我很樂意去用。

 

下載示例程式碼

通過一個可以執行的例子來看以上所有內容,下載這個解決方案並研究它。這始終是學習的一個好方法。

clip_image001

原文地址:http://www.jeffblankenburg.com/post/31-Days-of-Windows-Phone-7c-Day-23-Providing-Trial-Versions-of-Your-App.aspx

相關文章