在(最终)发布 Google Play 应用内结算的 v2 实现之后,除了发布后的问题之外,我什么也没遇到。交易失败、崩溃、无法恢复、诸如“无法下载,您已经拥有该项目”之类的疯狂错误,以及各种其他荒谬的事情。老实说,我现在已经在 iOS、Amazon App Store、Samsung Apps 和 Blackberry 10 上集成了 IAB,而 Google Play 代码花费的时间比所有其他代码加起来还要多。十倍。太可怕了。
不管怎样,我决定尝试在我的应用程序中实现 v3。集成过程要简单得多,因此值得谷歌称赞。此外,恢复以前的交易现在可以按预期工作,这很棒。然而,我遇到了一些令人困扰的问题:
- 当用户关闭 IAB 对话框(即点击对话框边框之外)时,我不会收到任何通知。我希望收到某种“用户取消”失败事件,但 onIabPurchaseFinished、onConsumeFinished 或 onQueryInventoryFinished 不会触发任何事件。结果,我的应用程序没有对此做出响应,我在屏幕上留下了一个肮脏的未使用的活动。我是否错过了某种“dialogIsFinished”事件?
- 当用户尝试购买他们已经拥有的商品时,应用程序会崩溃。令人难以置信的是,这看起来像是预期的行为,因为控制台上打印了一些暗示这一点的内容(“应用内结算错误:无法购买商品,错误响应:7:商品已拥有”)。我知道我应该在启动时查询可恢复的交易,但这不是一个解决方案,因为可以想象用户可以在恢复操作完成之前导航到我的 UI 的购买流程。当然,这应该是一个非硬停止,比如对话框之类的?我在这里做错了什么吗?我简直无法理解谷歌的某人认为这种情况应该严重崩溃......
非常感谢(提前)您的帮助。如果您认为有必要,我非常乐意分享代码,尽管我的问题似乎更多是关于功能设计而不是其他任何事情。我希望我在这里做错了什么,因为对我来说,像谷歌这样有能力的公司会重写整个系统,但仍然到处都有如此大的漏洞,这对我来说是不可想象的……:-/
再次感谢,
Ben
嗯,那是我的错误。当我编写 launchPurchaseFlow() 时,我最终遗漏了一些失败案例的清理代码。不仅如此,还包括之后的几个 catch{} 子句。感谢您指出了这一点!这刚刚在源存储库中修复:http://code.google.com/p/marketbilling http://code.google.com/p/marketbilling
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)