0

我正在 Delphi XE6 中开发 inapp-Purchase。基于 embarcadero 文档,我创建了一个 InAppPurchase 组件,如下所示:

        FInAppPurchase := TInAppPurchase.Create(self);
{$IFDEF Android}
        FInAppPurchase.ProductIDs.Add(License5And);
        FInAppPurchase.ProductIDs.Add(License10And);
        FInAppPurchase.ProductIDs.Add(License20And);
        FInAppPurchase.ProductIDs.Add(License50And);
{$ENDIF}
{$IFDEF IOS}
        FInAppPurchase.ProductIDs.Add(License5);
        FInAppPurchase.ProductIDs.Add(License10);
        FInAppPurchase.ProductIDs.Add(License20);
        FInAppPurchase.ProductIDs.Add(License50);
{$ENDIF}
        FInAppPurchase.OnSetupComplete := InAppPurchase1OnSetupComplete;
        FInAppPurchase.OnConsumeCompleted := InAppPurchase1ConsumeCompleted;
        FInAppPurchase.OnError := InAppPurchase1Error;
        FInAppPurchase.OnProductsRequestResponse := InAppPurchase1ProductsRequestResponse;
        FInAppPurchase.OnPurchaseCompleted := InAppPurchase1PurchaseCompleted;
        FInAppPurchase.OnRecordTransaction := InAppPurchase1RecordTransaction;
        FInAppPurchase.OnVerifyPayload := InAppPurchase1VerifyPayload;

{$IFDEF Android}
        FInAppPurchase.ApplicationLicenseKey := myLicenseKeyFromGoogleDeveloperConsole;
{$ENDIF}

然后在InAppPurchase1OnSetupCompleteI Called the FInAppPurchase.QueryProductsthen 它进入InAppPurchase1ProductsRequestResponseandproducts并且InavlidProductIDs两者都是空的。我不知道我错过了什么。任何帮助将不胜感激。

我在谷歌开发者控制台中检查了我的产品,所有这些产品都是“活动的”并且是“托管”的类型。

ps 代码在 ios 设备上运行完美。

4

3 回答 3

2

我浪费了很多时间来理解这个问题。在研究了源代码后,我了解到在 Android 中事件是异步的,您必须等待“QueryProducts”结果。为了解决这个问题,我创建了一个 TTimer,它在读取“InAppPurchase.IsProductPurchased”之前等待 5 秒

(我很抱歉英语不好)

于 2014-05-30T07:49:30.247 回答
0

似乎应该发布该应用程序以进行 alpha 或 beta 测试。我需要先将其上传为 alpha,然后再发布,而不是上传用于生产。之后显示产品。

于 2014-05-30T11:52:38.907 回答
0

我从 中的示例开始开发与市场的CapitalITrivia接口Enbarcadero。我有同样的问题,我阅读了这里给出的答案。

我试过了,确实有效。但是这个解决方案并没有让我满意,因为它依赖于不合理的延迟。

我意识到 inInAppPurchaseSetupComplete被称为QueryProducts函数,然后我执行了IsProductPurchased.

如果我IsProductPurchased在函数中移动测试,InAppPurchaseProductsRequestResponse我会得到预期的结果而不会引入延迟。

于 2017-03-02T15:32:18.233 回答