2017-04-24 25 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設計是合理的。

我不太確定,但無論如何感謝。