In App Purchase (WP8) と MarketPlace (WPF および WP8 用) を使用して、無料試用版アプリを購入するコードを作成しました。最終的にマーケットプレイスに送信する前に、自分のコードが完璧かどうかを確認したいだけです。
この方法を使用して、ライセンスを検証します。iSettings.IsAppPurchased は、IsolatedStorageSettings から値を保存または取得するために使用されるプロパティです。商品が購入の場合は true を返し、それ以外の場合は false を返します。
internal static void CheckLicense()
{
if (iSettings.IsAppPurchased)
{
return;
}
//Check license of Marketplace
LicenseInformation licInfo = new LicenseInformation();
//It always return false from device and emulator.
if (!licInfo.IsTrial())
{
iSettings.IsAppPurchased = true;
return;
}
else
{
iSettings.IsAppPurchased = false;
}
MyStore.InitializeStore();
// Return true if target device is WP8 else False
if (MyStore.IsStoreEnabled)
{
//Overload Method
CheckLicense(MyStore.Store);
}
}
これは、In App Purchase を使用してアプリを購入したかどうかを確認するためのオーバーロードされた方法です。
internal static void CheckLicense(StoreBase store)
{
var productLicenses = store.LicenseInformation.ProductLicenses;
if (productLicenses != null && productLicenses.Count > 0)
{
ProductLicenseBase lic = productLicenses["In_App_Product_ID"];
if (lic.IsActive)
{
iSettings.IsAppPurchased = true;
store.ReportProductFulfillment(lic.ProductId);
}
else
{
iSettings.IsAppPurchased = false;
}
}
}
最後は In App Purchase 機能を使ってアプリを購入するためのものです。
internal static void PurchaseIfTrial()
{
MyStore.InitializeStore();
if (!MyStore.IsStoreEnabled)
{
MarketplaceDetailTask task = new MarketplaceDetailTask();
task.ContentType = MarketplaceContentType.Applications;
task.ContentIdentifier = null;
task.Show();
}
else
{
CheckLicense();
if (!iSettings.IsAppPurchased)
{
MyStore.Store.RequestProductPurchaseAsync("In_App_Product_ID", false);
CheckLicense(MyStore.Store);
}
}
}
Launching app イベントでメソッド CheckLicense を呼び出します。
このコードをデバイスとエミュレータでテストしましたが、IsTrial() メソッドは常に false を返します。ベータ版だからでしょうか。
このリンクからアプリ内購入コードを取得しました。
私が何か間違ったことをしているなら、私に提案してください。
ありがとう