我有一个用于iOS的Xamarin应用程序,可以在应用程序内购买。在测试期间,我购买了一个可消耗产品,但没有完成转换(出错时崩溃)。现在,如果我重新安装应用程序,它允许购买此产品,但当然会恢复它,并显示消息“该产品已恢复免费”。
此行为是预期行为,但队列侦听器的UpdatedTransactions未激发。我可以直接通过StoreKit.SKPaymentQueue.DefaultQueue.Transactions,检查队列,但我需要知道用户交互何时结束(用户在该消息对话框中按下OK )。但不会触发任何侦听器方法。据我从苹果文档中了解,在此之后必须有事务的更新。也许在我尝试购买之前它就被解雇了。但是,我应该在购买之前手动检查队列吗?
发布于 2016-12-14 19:02:14
我没有使用Xamarin,但StoreKit是iOS特性的基础,因此它不能在Xamarin中工作。必须更早地激发事件。一旦您添加了事务观察者([SKPaymentQueue defaultQueue addTransactionObserver:self]),您将收到所有挂起事务的更新回调。如果这是在应用程序启动时完成的(它应该是),当您到达购买屏幕时,您将有交易更新。对我来说,这是IAP开发中最棘手的部分,因为您必须在应用程序启动时处理它们,以及在您拥有它们的所有屏幕中处理它们,并且回调可能随时发生。
还请注意,这个挂起的事务可能会在事务列表中出现多次(我主要使用非消耗品,所以每次重新启动应用程序时都会添加新的事务,而无需关闭所有挂起的事务)。为此,我让组件在应用程序启动时立即添加为事务观察者,侦听更新的事务,并将其存储在实例变量中以供以后使用。在开始新的购买之前,我会检查是否存在具有相同产品id的待处理事务,并采取相应的行动。
希望这能有所帮助。
https://stackoverflow.com/questions/41140477
复制相似问题