ios – paymentQueueRestoreCompletedTransactionsFinished:vs updatedTransactions:

我正在恢复已完成的交易(重复)
[[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:全部内容,希望文章能够帮你解决ios – paymentQueueRestoreCompletedTransactionsFinished:vs updatedTransactions:所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。