我有一个基本的Windows 10 UWP应用程序:
我想让所有将1.0或2.0版下载到旧功能集中的现有用户,而对于首次下载v3.0的新用户应提供应用内购买选项。
为此,我需要能够确定每次启动我的应用时从Windows应用商店首次购买/下载该应用的初始应用版本(或日期),以便我知道要提供的功能集。
我发现了Windows.ApplicationModel.Store.CurrentApp
,但文档显示该命名空间不再使用。我如何知道用户最初购买该应用程序的版本?
答案 0 :(得分:0)
我想让所有将1.0或2.0版下载到旧功能集中的现有用户,而对于首次下载v3.0的新用户应提供应用内购买选项。
目前,没有内置的API供您执行。您必须自己对代码进行判断。
例如,您可以使用LocalSettings在以前的项目(v1,v2)代码中进行标记,如下所示:
Windows.ApplicationModel.Package package = Package.Current;
PackageId packageId = package.Id;
PackageVersion version = packageId.Version;
if (version.Major < 3)
{
ApplicationData.Current.LocalSettings.Values["IsForPreviousVersion"] = true;
}
然后,您可以为现有用户向商店发布2.x.x.x版本,让他们更新其已安装的应用程序。他们打开您的应用后,您的代码将起作用,并且该标志将位于LocalSettings中。当它们更新到下一个应用程序版本时,不会清除LocalSettings。但是,如果用户在更新应用程序时未打开您的应用程序,则不会在LocalSettings中创建该标志。因此,您需要通知用户在更新到此2.x.x.x版本时打开您的应用。
之后,您可以将v3.0发布到商店,并在代码中进行判断,如下所示:
var IsForPreviousVersion = ApplicationData.Current.LocalSettings.Values["IsForPreviousVersion"];
if (IsForPreviousVersion != null)
{
// is for previous version users
}
答案 1 :(得分:0)
StoreCollectionData.AcquiredDate Property (Windows.Services.Store)会告诉您何时购买该应用程序。由于您知道更新的发布时间,因此可以在获取的日期推断出他们购买了哪个版本。
public static async Task<StoreProductQueryResult> GetAppGameProduct(string ProductId)
{
string[] productKinds = { "Application", "Game" };
List<String> filterList = new List<string>(productKinds);
List<String> idsList = new List<string>();
idsList.Add(ProductId);
if (_products == null)
{
_products = await _storeContext.GetStoreProductsAsync(filterList, idsList);
}
return _products;
}
private async void Page_Loaded(object sender, RoutedEventArgs e)
{
var all = await GetAppGameProduct("<Product Id - See App Identity").ConfigureAwait(true);
foreach (var product in all.Products)
{
IReadOnlyList<StoreSku> skus = (product.Value as StoreProduct).Skus;
for (int i = 0; i < skus.Count; i++)
{
Debug.WriteLine(@"{0} {1}", "Title: ", skus[i].Title);
Debug.WriteLine(@"{0} {1}", "IsTrial: ", skus[i].IsTrial);
if (skus[i].CollectionData != null)
{
Debug.WriteLine(@"{0} {1}", "CollectionData.AcquiredDate: ", skus[i].CollectionData.AcquiredDate);
}
}
}
}