7

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

过程如下:

  • 用户未登录/应用程序 ID 未在“设置”>“商店”中设置
  • 用户点击购买按钮。这叫[[SKPaymentQueue defaultQueue] addPayment:payment];
  • 用户立即按下主页按钮(应用程序进入后台)
  • 出现 Storekit 弹出窗口,要求确认购买。用户取消
  • 应用程序再次激活,并希望收到- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions,但没有。TX 仍处于购买状态。

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

再备注:经过以上步骤,我其实又买了一个in-App item(包括登录appstore)。在此之后,我将应用程序发送到后台并重新激活它,它将处理以前丢失的取消交易。

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

这种行为似乎是错误的,如果在实际环境中确实如此,我可能会认为这是一个 Storekit 错误。是否有人经历过相同的行为,或者可以指出一些事情来防止 tx 在购买状态下“挂起”?

谢谢,马库斯

4

1 回答 1

2

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

于 2011-09-16T14:20:38.113 回答