【问题标题】:Empty product list on QueryProducts in Delphi XE6 TInappPurchase on AndroidAndroid上Delphi XE6 TInappPurchase中QueryProducts上的空产品列表
【发布时间】:2014-07-19 04:57:47
【问题描述】:

我正在 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}

然后在InAppPurchase1OnSetupComplete 我调用了FInAppPurchase.QueryProducts 然后它进入InAppPurchase1ProductsRequestResponseproductsInavlidProductIDs 都是空的。我不知道我错过了什么。任何帮助将不胜感激。

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

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

【问题讨论】:

  • 为什么是-1??!!在没有 cmets 的情况下投票!!

标签: android delphi in-app-billing delphi-xe6


【解决方案1】:

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

(对不起英语不好)

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      我意识到在InAppPurchaseSetupComplete 中调用了QueryProducts 函数,然后我执行了IsProductPurchased

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-13
        • 2014-09-25
        • 1970-01-01
        • 1970-01-01
        • 2016-12-11
        • 2016-08-05
        • 2014-06-27
        • 1970-01-01
        相关资源
        最近更新 更多