Vik*_*ehr 6 objective-c objective-c++ in-app-purchase ios skpaymenttransaction
从iOS 13.4 开始,当行...
[[SKPaymentQueue defaultQueue] addPayment:payment];
Run Code Online (Sandbox Code Playgroud)
……被处决。
在iOS 13.4之前,用户确认购买时会弹出一个对话框,但现在什么都没有。有谁知道可能导致此问题的原因?
笔记:
尝试完全“刷新”队列一次:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
for (SKPaymentTransaction *transaction in transactions) {
//debug - finish all transactions to make queue empty
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
/*
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchased:
//your code
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
//your code
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
}
*/
}
}
Run Code Online (Sandbox Code Playgroud)
然后将其替换回您的代码并尝试购买。
首先,确保您在成功/失败时完成交易:
\n\n在我们的例子中,旧代码没有调用SKPaymentQueue.default().finishTransaction(transaction)将其从队列中删除。在 iOS 13.4 之前,即使文档说需要\xe2\x80\x99s,这显然工作得很好
因此,会发生的情况是,对话框将显示一次,用户会取消,然后从那时起,事务将保留在队列中,并自动返回为已取消,而不会再次显示对话框。完成事务将清除它并允许对话框再次显示
\n\n如果这不起作用:
\n\n根据 Apple 工程师的要求,我通过 App Store 日志记录和 sysdiagnose 提交了一个雷达(FB7648374)
\n\n请做同样的事情:
\n\n