gpt4 book ai didi

ios - paymentQueueRestoreCompletedTransactionsFinished : vs updatedTransactions:

转载 作者:可可西里 更新时间:2023-11-01 03:08:18 26 4
gpt4 key购买 nike

我正在恢复已完成的交易(重复)

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions

我得到了应用恢复的历史交易列表,但是方法:

- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue

甚至没有被调用一次,所以我想知道我应该使用哪个?我做了一些研究,发现 updatedTransactions: 方法应该用于检查事务状态,但是如果我得到恢复的事务列表,将它们全部视为事务是没有意义的。我应该使用哪一个? paymentQueueRestoreCompletedTransactionsFinished 是否只给我最新的(即沙盒订阅在几分钟后到期,我在测试时在 updatedTransactions 中获得了完整的历史交易列表)。

最佳答案

有一个很棒的关于使用 StoreKit 的 WWDC 视频,它是 WWDC2012 Session 302。

要隔离每次购买,您的 updatedTransactions 方法可能如下所示:

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {

for (SKPaymentTransaction *transaction in transactions) {

switch(transaction.transactionState) {
case SKPaymentTransactionStatePurchased:
// Unlock content
//... Don't forget to call `finishTransaction`!
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStatePurchasing:
// Maybe show a progress bar?
break;
case SKPaymentTransactionStateFailed:
// Handle error
// You must call finishTransaction here too!
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
// This is the one you want ;)
// ...Re-unlock content...
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
}
}
}

一旦您确定购买正在恢复,您就可以根据需要提供内容 - 最好是从该 switch 语句中调用一个单独的方法并将交易作为参数传递。当然,实现取决于您。

关于ios - paymentQueueRestoreCompletedTransactionsFinished : vs updatedTransactions:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14309427/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com