当应用程序在后台并且用户尚未登录到商店时,我在应用程序购买(沙盒环境)中取消用户有一些奇怪的行为:
过程如下:
- 用户未登录/应用程序 ID 未在“设置”>“商店”中设置
- 用户点击购买按钮。这叫
[[SKPaymentQueue defaultQueue] addPayment:payment];
- 用户立即按下主页按钮(应用程序进入后台)
- 出现 Storekit 弹出窗口,要求确认购买。用户取消
- 应用程序再次激活,并希望收到
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
,但没有。TX 仍处于购买状态。
如果 testuser 已经登录到商店,则此过程是不同的。在这种情况下,上述过程按预期工作。
再备注:经过以上步骤,我其实又买了一个in-App item(包括登录appstore)。在此之后,我将应用程序发送到后台并重新激活它,它将处理以前丢失的取消交易。
结论: 用户在应用程序处于后台且未登录商店时取消支付交易会导致 storekit 回调延迟交付。在用户实际登录到应用商店并通过重新激活应用触发 PaymentQueue 流程后完成交付。
这种行为似乎是错误的,如果在实际环境中确实如此,我可能会认为这是一个 Storekit 错误。是否有人经历过相同的行为,或者可以指出一些事情来防止 tx 在购买状态下“挂起”?
谢谢,马库斯