0

我正在尝试应用内购买 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 文件)。

任何人都可以看看吗?谢谢 :)

4

1 回答 1

0

我找到了解决方案:必须在 UI 线程上调用所有 WinRT 存储函数,因此从 UI 线程获取 CoreDispatcher 并保持它通过它调用这些函数。

于 2013-01-31T17:00:58.867 回答