在App Purchase中,用户在后台取消tx:tx状态保持购买状态

时间:2011-06-10 19:21:07

标签: iphone ios in-app-purchase storekit

我在应用程序购买(沙盒环境)中取消用户时有一些奇怪的行为,而应用程序处于后台并且用户尚未登录到商店:

流程如下:

  • 用户未登录/未在设置>中设置应用ID店
  • 用户点击购买按钮。这会调用[[SKPaymentQueue defaultQueue] addPayment:payment];
  • 用户立即推出主页按钮(应用程序转到后台)
  • 出现Storekit弹出窗口,要求确认购买。用户取消
  • 应用程序再次激活,并希望收到- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions,但不会。 TX仍处于国家采购阶段。

如果testuser已经登录到商店,则此过程会有所不同。在这种情况下,上述过程按预期工作。

另一个评论:完成上述步骤后,我实际购买了另一个应用内商品(包括登录appstore)。在此之后,我将应用程序发送到后台并重新激活它,它将处理错误的缺少取消事务。

结论: 用户在应用程序处于后台且未登录到商店时取消付款tx会导致storekit回调延迟交付。在用户实际登录到appstore之后完成交付,并通过重新激活应用程序来触发PaymentQueue流程。

这种行为似乎是错误的,如果它实际上就像在真实环境中那样,我可能会认为这是一个Storekit错误。是否有人经历过相同的行为或者可以指出某些事情以防止tx在购买状态中“悬挂”?

谢谢, 马库斯

1 个答案:

答案 0 :(得分:2)

对于Store Kit,我不相信你可以指望任何事情。在按下“购买”按钮后,不要“等待”等待交易排队,而是继续关注您的业务。当您收到有关交易(可能是明天)的通知时,请处理它们。我相信在文档中对这种效果有一个评论 - 你的应用程序应该在它启动时注册SK通知,它应该随时可以获得它们。因此,当涉及Store Kit时,不要在应用程序中建立任何“状态”意识。只需在交易到达时处理。