-1

我已经编写了使用 In App Purchase (WP8) 和 MarketPlace(对于 WPF 和 WP8)购买免费试用应用程序的代码。我只是想确保我的代码在提交到 Marketplace 进行最终处理之前是否完美。

这个方法我用它来验证许可证。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;
            }
        }
    }

最后一个是使用应用内购买功能购买应用程序。

    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);
            }
        }
    }

我在启动应用程序事件时调用方法 CheckLicense。

我已经在设备和模拟器上测试了这段代码,但 IsTrial() 方法总是返回 false。是不是因为beta版。

我从此链接获得了应用内购买代码。

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-Games

如果我做错了什么,请建议我。

谢谢

4

1 回答 1

0

没有办法说你的代码是否“完美”。您将能够通过测试来判断它是否存在。

只有从市场安装应用程序后,“IsTrial”功能才会正确运行。
有关测试此功能的建议,请参阅http://msdn.microsoft.com/en-us/library/ff967557%28v=VS.92%29.aspx

于 2013-06-17T16:55:07.280 回答