我在应用程序购买(沙盒环境)中取消用户时有一些奇怪的行为,而应用程序处于后台并且用户尚未登录到商店:
流程如下:
[[SKPaymentQueue defaultQueue] addPayment:payment];
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
,但不会。 TX仍处于国家采购阶段。 如果testuser已经登录到商店,则此过程会有所不同。在这种情况下,上述过程按预期工作。
另一个评论:完成上述步骤后,我实际购买了另一个应用内商品(包括登录appstore)。在此之后,我将应用程序发送到后台并重新激活它,它将处理错误的缺少取消事务。
结论: 用户在应用程序处于后台且未登录到商店时取消付款tx会导致storekit回调延迟交付。在用户实际登录到appstore之后完成交付,并通过重新激活应用程序来触发PaymentQueue流程。
这种行为似乎是错误的,如果它实际上就像在真实环境中那样,我可能会认为这是一个Storekit错误。是否有人经历过相同的行为或者可以指出某些事情以防止tx在购买状态中“悬挂”?
谢谢, 马库斯
答案 0 :(得分:2)
对于Store Kit,我不相信你可以指望任何事情。在按下“购买”按钮后,不要“等待”等待交易排队,而是继续关注您的业务。当您收到有关交易(可能是明天)的通知时,请处理它们。我相信在文档中对这种效果有一个评论 - 你的应用程序应该在它启动时注册SK通知,它应该随时可以获得它们。因此,当涉及Store Kit时,不要在应用程序中建立任何“状态”意识。只需在交易到达时处理。