【发布时间】:2014-09-21 05:40:14
【问题描述】:
在我的安卓游戏中,我在应用内购买了一次出售多个商品,即获得 5000 个硬币 + 删除广告。这意味着我同时拥有消耗品和非消耗品。 问题在于恢复购买。我知道我可以恢复非消耗品购买,但由于我的 IAP 包含消耗品和非消耗品,我无法恢复购买,因为我会消费产品。
有没有办法在消费完成后检索物品的购买详情?
【问题讨论】:
标签: android in-app-purchase google-play
在我的安卓游戏中,我在应用内购买了一次出售多个商品,即获得 5000 个硬币 + 删除广告。这意味着我同时拥有消耗品和非消耗品。 问题在于恢复购买。我知道我可以恢复非消耗品购买,但由于我的 IAP 包含消耗品和非消耗品,我无法恢复购买,因为我会消费产品。
有没有办法在消费完成后检索物品的购买详情?
【问题讨论】:
标签: android in-app-purchase google-play
只需创建一个额外的消耗品以购买超过前 5,000 个硬币的额外物品,然后像往常一样在购买后立即消耗该物品,并自己记录 5,000 个硬币的增量,就像在 TrivialDrive IAB 示例中所做的那样。
当您首次购买组合删除广告/获得 5,000 个硬币的物品时,不要消费该物品 - 将其视为非消耗品 - 但将购买事件本身视为执行相同逻辑的一次性触发器就像您在消费“购买额外 5,000 个硬币”物品时一样。
请记住,就这一流程的 Google 方面而言,“消耗性”和“非消耗性”物品彼此没有区别。它们是可消耗的还是不可消耗的,仅取决于您的代码中决定使用它们并在内部记录可消耗资源的增量,或者将它们留在那里作为购买已发生事实的永久记录。将项目留在那里使其在支持 IAB 的所有用户设备上可见,而消耗性项目必须通过其他方式记录(并在设备之间共享)(例如,在您的应用自己的云数据库中)。
因此,上述方法的替代方案是立即消费购买的删除广告/添加 5,000 个硬币项目,并在您自己的数据库中记录广告被永久删除,并且用户有 5,000 个硬币。然后,用户可以重新购买该项目,关闭广告作为多余的无操作,并且只记录 5,000 个硬币增量。
但是第二种方法只会让您的用户感到困惑,因为即使在广告已经被移除之后,该项目仍会被称为“移除广告/获得 5,000 个硬币”。此外,我在此答案开头概述的方法将允许您创建任意数量的硬币购买项目,不仅有 5,000 个硬币,还有其他数量。
【讨论】:
首先,在 In-app billing V3 中,您可以使用托管项目。基本上,您不应该在 V3 中使用任何非托管项。创建托管项目,购买并使用它。如果consume调用的结果码是BILLING_RESULT_OK,给用户提供好处。
回答您的问题,如果您消费了产品,您有责任跟踪和管理它。
编辑:
您可以尝试的另一种方法是,为 4 个按钮创建 4 个 iap 项。在您的应用中跟踪所有负责解锁广告的 iap 项目。当用户点击按钮时,使用 getSkuDetails() 检查相应的 iap 项目是否已经拥有。如果是,请消费并购买。如果没有,则直接购买(如果 iap 项负责解锁广告,则解锁广告)。现在不要消费 iap 项目。
在 oncreate() 中,使用 getSkuDetails() 检查所有拥有的项目。如果任何一个拥有的物品负责解锁广告,并且如果广告尚未解锁,则解锁广告(恢复)。
【讨论】: