我有TrivialDrive应用程序正在运行,但我仍然对消耗品购买有疑问。 。
应用程序在onCreate事件中开始执行queryInventoryAsync调用以查看此用户的库存,以及其他产品,它会检查google库存中是否有任何气体。但在我看来,永远不会有任何气体,因为无论何时用户购买气体,我们都“消耗”它进行消耗异步呼叫。
似乎天然气库存从未保留在Google服务器上,而ConsuAsync只是完成耗材的计费。 (也许它应该被称为billForConsumableAsync而不是consumeAsync?)
TrivialDrive应用程序始终将耗材库存保存在共享首选项内存中。
如果这一切都是真的,那么为什么应用程序会检查谷歌服务器上的燃气库存。永远都不会有。
此外,如果用户在另一台设备上运行我的应用程序,他将不会看到他的燃气库存,因为它被保存在另一台设备的内存中。
所以,我的理解是,通过应用内结算,耗材库存永远不会保留在Google服务器上 - 必须由应用管理。这似乎是处理它的错误方法。
我不明白什么? 谢谢, 加里
答案 0 :(得分:0)
从开发人员的角度来看,这确实是错误的处理方式。但从谷歌的角度来看,这是非常有吸引力的,因为它最大限度地减少了服务器的负担。
答案 1 :(得分:0)
消费品(如用于额外的天然气或虚拟货币等)通常被理解为仅记入一个设备。因此,如果您拥有一部手机和一台平板电脑,并且您在手机上购买了更多气体,那么平板电脑上的气体就不会更多。这就是为什么可用的气体(或虚拟硬币余额,或其他)仅存储在设备本地而不是中央服务器上。
以这种方式完成的原因之一是,因为你不能依赖于你拥有的一个事实,所以任何其他方式(所有设备的共用油箱)都不可能完全无法工作互联网连接始终更新您的服务器。因此,如果你用100加仑的汽油填充你的共享油箱,你可以将手机和平板电脑设置为飞机模式,并在两台设备上耗尽全部100加仑(因为平板电脑永远不会知道你的也一直在打电话,反之亦然)。下次您的互联网连接可用时,您的共用油箱中最终会产生-100加仑的汽油。
onCreate
进行queryInventoryAsync
调用的原因是应用程序可以捕获并完成购买完成的交易(即用户收费),但应用程序在有时间之前就已经死亡实际记录所购买的额外天然气。
但是:我认为Google在设计此购买流程时实际上存在一些错误!您可以在my related question on this issue中详细了解相关信息。这个问题也可能有助于更详细地解释为什么需要进行queryInventoryAsync
- 调用以及需要注意的其他内容。