我正在尝试在应用内购买API(C ++ / CX)和RequestProductPurchaseAsync
引发Platform::InvalidArgumentException^
我有以下代码:
// loading store
create_task(CurrentAppSimulator::LoadListingInformationAsync()).then([](ListingInformation^ listing)
{
auto product1 = listing->ProductListings->Lookup("product1");
auto product2 = listing->ProductListings->Lookup("product2");
});
//after that finishes I try to purchase product2
auto licenseInformation = CurrentAppSimulator::LicenseInformation;
if (!licenseInformation->ProductLicenses->Lookup("product2")->IsActive)
{
// this exact next line throws InvalidArgumentException
auto op = CurrentAppSimulator::RequestProductPurchaseAsync("product2", true); // throws !!!!!
auto purchaseTask = create_task(op);
purchaseTask.then([](task<Platform::String^> currentTask)
{
...
});
}
else ...
如果它在Windows Store示例项目中使用,则完全相同的代码可以正常工作,但它在我自己的项目中不起作用。 (显然使用相同的假冒产品xml文件)。
任何人都可以看看吗?谢谢:))
答案 0 :(得分:0)
我找到了解决方案:必须在UI线程上调用所有WinRT存储函数,因此从UI线程获取CoreDispatcher并让它通过它调用这些函数。