2017-04-24 27 views
0

我想对我做通用的Windows平台(UWP)应用中的一些购买,但是当我做这种方式:UWP StoreContext特定用户

auto storeContext = StoreContext::GetDefault(); 
auto result = co_await storeContext.RequestPurchaseAsync(PRODUCT_STORE_ID); 

购买与Microsoft帐户目前完成在调用RequestPurchaseAsync方法之前在设备中登录。我想要的是使用特定的微软账户(例如[email protected])进行购买,实际上我想要的是拥有与该微软账户相关的storeContext对象,以便我从StoreContext类调​​用的每种方法为该微软帐户完成对象。因此,如果购买后我做了以下事情:

auto result = co_await storeContext.GetConsumableBalanceRemainingAsync(PRODUCT_STORE_ID); 

我会得到账户[email protected]剩余的余额。其实我不知道该怎么做,因为如果在购买之后和余额请求之前,我从Store应用程序注销,该应用程序是安装在每台Windows 10个人计算机上的应用程序,并且是外部应用程序,即不是我的应用程序,那么余额请求会在我的应用程序中返回一个错误,因为该操作未关联到任何帐户。如果不是仅从商店应用程序注销,我还使用其他Microsoft帐户(例如[email protected])登录,余额请求将在我的应用程序中返回[email protected]的余额,而不是用户1的余额@ gmail.com,这是我想要的。所以我不希望这些外部签名更改会影响我的应用程序行为。

我已经看到StoreContext类有一个GetForUser方法,但我还没有找到一种方式来传递像“[email protected]”作为参数。我找到了一种通过非roamable-id创建用户的方法,我不知道如何从用户名中获取该用户。事实上,我不确定GetForUser方法是否可以用于此目的。除了下面的代码,我的应用程序崩溃:

auto storeContext = StoreContext::GetDefault(); 
auto user = storeContext.User(); 
auto nonRoamableId = user.NonRoamableId(); //This line makes my app crash 

所以,如果你们任何人有任何想法,将非常感激。

PD:上述代码是使用Visual Studio 2017与C++和cppwinrt项目从https://github.com/Microsoft/cppwinrt

回答

0

。如果不是仅从商店应用程序注销,我还使用其他Microsoft帐户(例如[email protected])登录,余额请求将在我的应用程序中返回[email protected]的余额,而不是用户1的余额@ gmail.com,这是我想要的。

如您所知storeContext.GetConsumableBalanceRemainingAsync(PRODUCT_STORE_ID)方法用于获取当前帐户余额。如果您在收到方法的回复之前更改为其他帐户。它会返回错误。因为剩余的余额不属于经常账户。所以这个api设计是合理的。

我看到StoreContext类有一个GetForUser方法,但我还没有找到一种方法来传递像“[email protected]”这样的参数。我找到了一种通过非roamable-id创建用户的方法,我不知道如何从用户名中获取该用户。

目前,没有用于获取特定用户剩余余额的api。对于您的方案,我建议您可以将用户名信息,消费余额,剩余余额存储在数据库或服务器或存储区中,这样您或您的客户就可以根据用户名搜索所有信息,例如查询剩余-平衡。

0

感谢@nicozhu您的意见,但是这一点:

对于您的情况我建议你可以存储用户名信息,消耗的平衡,剩下的余额在数据库或服务器或Azure存储,通过这种方式,您或您的客户可以基于用户名搜索所有信息,例如查询余额余额。

我不知道询问这些信息的Microsoft帐户就必然时,我所能做的就是要求这个信息的storeContext对象,这将给我当前的登录用户的信息,我也不知道是谁。我的意思是,如果我的申请一旦启动,我会要求余额,例如返回值为5,10分钟后我会再次进行购买并请求剩余余额,但是这次我返回的值为6 ,这并不意味着同一用户进行了购买,也可能是在购买之前签署更改,因此此值(6)对应于购买前还有5个剩余余额的新用户,但第一个用户仍然有5作为余额。我无法控制这些签名更改,但这影响了我的应用程序的行为。我甚至没有收到关于这些签名更改的通知,所以如果我多次询问信息,我不知道这些信息是否对应于相同的用户或不同的用户。所以关于这个:

这个api设计是合理的。

我不太确定,但无论如何感谢。