我是否需要在Windows Phone 8中缓存应用内购买?

时间:2013-10-12 14:15:50

标签: windows-phone-8 in-app-purchase windows-phone

我是否需要缓存拥有应用内购买许可证的事实?例如,那里的用户可能没有互联网连接。我不希望使用该方法检查每个应用程序启动时的许可证。

await CurrentApp.LoadListingInformationAsync();

是否需要在IsolatedStorage中缓存应用内购买?例如:

    /// <summary>
    /// Get list of In-app purchased
    /// </summary>
    /// <returns></returns>
    public async Task<List<string>> GetOwnedItems()
    {
        var settings = IsolatedStorageSettings.ApplicationSettings;

        List<string> items = (List<string>)settings["PurchasedProducts"];

        if (!items.Any()) //TODO If no purchases, call this block one time, no more!!!
        {
            ListingInformation li = await CurrentApp.LoadListingInformationAsync();
            items = new List<string>();

            foreach (string key in li.ProductListings.Keys)
            {
                if (CurrentApp.LicenseInformation.ProductLicenses[key].IsActive)
                    items.Add(key);
            }

           //Save to IsolatedStorage
           settings["PurchasedProducts"] = items;
        }

        return items;
    }

    public async void PurcaseItem(string itemKey)
    {
        if (!Store.CurrentApp.LicenseInformation.ProductLicenses[itemKey].IsActive)
        {
            ListingInformation li = await Store.CurrentApp.LoadListingInformationAsync();
            string pID = li.ProductListings[itemKey].ProductId;

            string receipt = await Store.CurrentApp.RequestProductPurchaseAsync(pID, false);

            var settings = IsolatedStorageSettings.ApplicationSettings;

            //TODO Add key to Isolated storage
            List<string> items = ((List<string>)settings["PurchasedProducts"]).Add(pID);

        }
    }

1 个答案:

答案 0 :(得分:1)

不,不需要缓存应用内购买。 Windows Phone操作系统在LicenseInformation Class中为您完成此操作。

如果没有Internet连接,则用户也无法执行任何应用内删除。因此,您不必担心丢失用户许可证。