-1

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 を返します。ベータ版だからでしょうか。

このリンクからアプリ内購入コードを取得しました。

http://channel9.msdn.com/Shows/Inside+Windows+Phone/Inside-Windows-Phone-45--Adding-In-App-Purchase-as-a-light-up-feature-to-your-Windows -Phone-7-ゲーム

私が何か間違ったことをしているなら、私に提案してください。

ありがとう

4

1 に答える 1

0

コードが「完璧」かどうかを判断する方法はありません。かどうかは、テストすることでわかります。

「IsTrial」機能は、アプリがマーケットプレイスからインストールされた後にのみ正しく動作します。
この機能のテストに関するアドバイスについては、http://msdn.microsoft.com/en-us/library/ff967557%28v=VS.92%29.aspxを参照してください。

于 2013-06-17T16:55:07.280 に答える