Xamarin.ios:购买时先前购买的应用程序内产品已恢复,但交易未更新



我有一个用于iOS的Xamarin应用程序,用于应用内购买。在测试过程中,我购买了一个消耗品,但没有完成此操作(错误崩溃)。现在,如果我重新安装了该应用程序,它允许购买此产品,但当然可以恢复它,并显示"免费恢复产品"的消息。

这种行为是可以预期的,但是没有解雇队列侦听器的更新。我可以直接通过Storekit.skpaymentqueue.defaultqueue.transactions检查队列,但是我需要知道何时完成用户交互完成(用户在该消息对话框中按OK)。但是没有发射听众的方法。我从Apple文档中了解到,此后必须进行交易的更新。也许在我尝试购买之前被解雇。但是,我应该在购买前手动检查队列吗?

我不使用Xamarin,但是Storekit介绍了iOS功能,因此在Xamarin中无法使用。该活动必须早些时候开除。一旦添加事务观察者([[[[Skpaymentqueue defaultqueue] addTransactionObserver:self]),您将收到带有所有待处理交易的更新回调。如果在启动应用程序(应该是)时完成此操作,那么当您到达购买屏幕时,您将更新交易。对我来说,这是IAP开发中最棘手的部分,因为您必须在应用程序启动以及所有拥有它们的屏幕上处理它们,并且可以随时发生回调。

另外,请注意,此待处理的交易可能会在事务列表中多次出现(我主要是使用非支出,因此每次您重新启动应用程序而不关闭所有待处理交易时,都会添加新事务)。为此,我在应用程序启动后立即将组件作为事务观察者添加,聆听更新的交易,并将其存储在实例上,以供以后使用。在开始新购买之前,我会检查是否有同一产品ID的待处理交易并采取相应的行动。

希望这会有所帮助。

最新更新