应用内结算琐碎驱动器示例中的易耗品购买



我有TrivialDrive应用程序工作,但我仍然对消耗品购买有疑问......

该应用程序从onCreate事件开始,执行queryInventoryAsync调用以查看此用户的库存是什么,并在其他产品中检查Google库存中是否有任何气体。 但在我看来,永远不会有任何气体,因为每当用户购买天然气时,我们都会"消耗"它进行消耗异步调用。

似乎气体库存永远不会保留在谷歌服务器上,并且消耗异步只是完成消耗品的计费。(也许它应该被称为 billForConsumableAsync,而不是 consumptionAsync?)

TrivialDrive 应用程序始终将消耗品库存保存在共享首选项内存中。

如果这一切都是真的,那么为什么该应用程序会在谷歌服务器上检查汽油库存。 永远不会有。

此外,如果用户在另一台设备上运行我的应用程序,他将看不到他的汽油库存,因为它保存在另一台设备的内存中。

所以,我的理解是,通过应用内结算,消耗品库存永远不会保留在谷歌服务器上——它必须由应用管理。这似乎是错误的处理方式。

从开发人员的角度来看,这确实似乎是错误的处理方式。但从谷歌的角度来看,这是非常有吸引力的,因为它最大限度地减少了服务器上的负载。

消耗

品(如额外的汽油或虚拟货币等)通常被理解为只记入一台设备。因此,如果您拥有手机和平板电脑,并且在手机上购买了更多的汽油,那么您就不会在平板电脑上获得更多的汽油。这就是为什么可用的gas(或虚拟硬币余额,或其他任何东西)只存储在本地设备上,而不是存储在中央服务器上。

这样做的原因之一是因为几乎不可能以任何其他方式(所有设备的共享油箱)使其工作,因为您不能依赖始终拥有互联网连接的事实来更新您的服务器。因此,如果您将共享油箱加满 100 加仑的汽油,则可以将手机和平板电脑设置为飞行模式,并在两台设备上用完整整 100 加仑(因为平板电脑永远不会知道您也一直在玩手机,反之亦然)。下次您的互联网连接可用时,您的共享油箱中最终会得到 -100 加仑的汽油。

onCreate进行queryInventoryAsync调用的原因是,应用程序可以捕获并完成购买完成的交易(即用户被计费),但应用程序在实际记录购买的额外汽油之前就死了。

但是:我认为谷歌在这个购买流程的设计中实际上犯了几个错误!您可以在我关于此问题的相关问题中阅读更多相关信息。这个问题也可能有助于更详细地解释为什么你需要做queryInventoryAsync电话以及还需要注意什么。

最新更新