首页 文章

SKPaymentTransactionObserver没有在app开关上获得回调

提问于
浏览
5

我设置了应用内购买,以便当用户点击“购买”按钮时,会出现“请稍候”视图,并将付款添加到付款队列中 . 这总是导致队列的观察者立即回调,说明交易进入“采购”状态 .

我的问题发生在用户返回主屏幕,然后弹出确认购买对话框,然后取消 . 如果我在切换回应用程序之前在主屏幕上等待一段时间,应用程序永远不会获得有关事务切换状态或被删除的任何回调 . 如果我检查支付队列,我可以看到该交易仍然在队列中,仍然处于“采购”状态 . 在恢复应用程序后,有什么办法可以让它回调并从队列中删除它吗?

2 回答

  • 5

    如果我理解你的情况,你就遇到了这个问题:

    In App Purchase user cancels tx while app in background: tx state stays on purchasing

    这似乎是Apple的商店套件中的一个错误 . 如果您在开始购买后立即将应用程序发送到后台,然后在提示购买确认弹出窗口时按取消按钮,则可以轻松复制此问题 . 您的应用将永远不会收到交易失败(已取消)通知,并将进入阻止状态(如果您禁止用户界面尝试阻止用户与应用互动,直到购买完成) .

    我们必须等待Apple的修复 . 在此期间,如果您的应用进入了阻止状态,因为您在购买时禁用了用户界面;你应该实现一些机制,让用户离开那个状态 .

    祝好运!

  • 0

    我有同样的问题,但是,我只是设法在使用沙盒appstore帐户时重现它 .

    有没有人设法使用真正的苹果帐户重现它?

    我还没有尝试过这个,但我正在考虑在应用程序失去焦点时删除我的SKPaymentTransactionObserver,并在下一次变为活动时再次添加它 .

    关于这个错误的奇怪之处在于你在购买状态下遇到了交易,但是当你正确关闭应用程序并重启它时,你会发现购买状态下的交易仍然存在,但事实并非如此 . ..好像重新添加SKPaymentTransactionObserver已触发它正确地重新评估它的状态 .

相关问题