在我的安卓游戏中,我在应用内购买了一次销售多件商品,即获得5000个硬币+删除广告。这意味着我一次有消耗品和非消耗品。 问题是恢复购买。我知道我可以恢复非消耗品购买,但由于我的IAP包括消耗品和非消耗品,我在恢复购买时遇到问题,因为我会消费该产品。
有没有办法在消费完成后检索商品的购买详情?
答案 0 :(得分:3)
只需创建一个额外的消耗品,用于购买超过前5,000个的额外硬币,并在购买后立即使用该硬币消耗,并自行记录5,000个硬币增量,就像在TrivialDrive IAB示例中所做的那样。
当您最初购买合并的移除广告/获取5,000个硬币项目时,请不要使用该项目 - 将其视为非消耗品 - 但将购买活动本身视为执行相同逻辑的一次性触发器就像你在消费你的时候一样,购买额外的5000个硬币"项目
请记住"耗材"和"非消费品"就这个过程的谷歌方面而言,项目并没有彼此不同。它们是消耗品或非消耗品,仅凭您的代码决定使用它们并在内部将增量记录到消耗品资源中,或者将其留在那里作为购买已发生事实的永久记录。将项目留在那里使其在支持IAB的所有用户设备上可见,而消耗品必须通过其他方式记录(并在设备之间共享)(例如,在应用程序自己的云中的数据库中)。 p>
因此,上述方法的另一种选择是立即消费购买移除广告/添加5,000个硬币项目,并在您自己的数据库中记录广告被永久删除,并且用户拥有5,000个硬币。然后,用户可以重新购买该项目,将广告关闭为冗余无操作,并且仅记录5,000个硬币增量。
但是第二种方法只会让您的用户感到困惑,因为该项目仍会被调用"删除广告/获得5,000个硬币,"即使广告已被删除。此外,我在这个答案开始时概述的方法将允许您创建任意数量的硬币购买项目,不仅有5,000个硬币,还有其他金额。
答案 1 :(得分:1)
首先,在应用内结算V3中,您可以使用托管项目。基本上,您不应该在V3中使用任何未管理的项目。创建托管项目,购买并使用它。如果消费调用的结果代码是 BILLING_RESULT_OK ,请为用户提供好处。
提出您的问题,如果您使用产品,则有责任跟踪和管理产品。
修改强>
您可以尝试的另一种方法是为4个按钮创建4个iap项目。在您的应用中保留所有负责解锁广告的iap项目的跟踪。当用户点击按钮时,使用 getSkuDetails()检查相应的iap项目是否已拥有或未拥有。如果是,请消费并购买。如果没有,请直接购买(如果iap项目负责解锁广告,解锁广告)。现在不要使用iap项目。
在 oncreate()中,使用 getSkuDetails()检查所有拥有的项目。如果任何一个拥有的项目负责解锁广告,并且广告尚未解锁,请解锁广告(还原)。