我们有报告说用户无法在我们的游戏中购买IAP . 我们做了一些研究,发现我们丢失的互联网连接消息还有很多不足之处,所以我们修复了这个问题 . 我们发现了一个非常奇怪的问题,但这让我感到困惑 . 如果在购买过程中连接中断,则该帐户以后的所有购买都不会失败也不会完成 .

我们开始使用以下购买:

[[SKPaymentQueue defaultQueue] addPayment:payment].

这将启动触发弹出窗口登录并完成购买的过程 . 如果连接在登录面板消失后立即退出,则事务永远不会更新,它永远不会超过SKPaymentTransactionStatePurchasing状态 .

只有通过设置高数据包丢失(50-100%工作)使用Network Link Conditioner轻松复制连接时,这才会起作用(中断) . 值得注意的是,我们能够通过在我们的办公楼周围移动到不良的wifi区域,在笔记本电脑上复制这个 . IAP在稳固的网络条件下运行良好 .

这本身并不是一个大问题,最大的问题是所有后续购买也会陷入SKPaymentTransactionStatePurchasing状态 . paymentQueue:updatedTransactions:当购买以空白的transactionID开始并且状态为SKPaymentTransactionStatePurchasing时调用 . 不再发生更新 .

我们尽早添加观察者(在应用程序启动时),并且不要更改它,因此没有多个观察者 . 我打印了日志以确保传递给观察者的队列也匹配defaultQueue .

更令人沮丧的是,这似乎与账户有关 . 如果我退出商店,购买将触发登录,如果我使用新的测试帐户登录,它将按预期完成 . 如果我使用仍在SKPaymentTransactionStatePurchasing状态下购买的帐户登录,则所有购买都将被卡住 .

有没有人遇到这个问题,有没有人知道一个变通方法或有任何建议?