应用内购买:如何完成SKPaymentQueue中的所有交易?

swa*_*ner 5 in-app-purchase ios

我遇到的问题是,当应用程序在购买应用程序内消耗品后失去网络时,finishTransaction将无法工作。我正在打电话finishTransaction(仍然没有互联网连接),但下次应用程序启动时我正在设置

[[SKPaymentQueue defaultQueue] addTransactionObserver:...];
Run Code Online (Sandbox Code Playgroud)

系统会要求用户输入 App Store 密码。我的问题是我不知道他在这里到底买了什么。如果他在此处按“取消”,一切都很好,但如果用户输入密码,他就会被计费,但不会得到任何好处。所以我宁愿取消所有待处理的交易。

我已经尝试过

for (SKPaymentTransaction *transaction in [SKPaymentQueue defaultQueue].transactions) {
    [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
Run Code Online (Sandbox Code Playgroud)

[SKPaymentQueue defaultQueue].transactions这里是空的。除了取消所有待处理的交易之外,是否还有其他可能性可以防止用户被询问?