2

誰もがIAPを使用して復元オプションを作成する方法を知っています。

消耗品以外の商品を購入しています。

私はこのデリゲートメソッドを実装する必要があることを知っています:

- (void)restoreTransaction:(SKPaymentTransaction *)transaction
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue

しかし、私はまだこのメソッドを呼び出すプロセスで理解することはできません。

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];コールバックメソッドを呼び出す前に、このメソッドを呼び出す必要があると思い ます。

それがどのように機能するかを段階的に説明できますか。

4

1 に答える 1

4

あなたは正しいと思います!呼び出す必要があるのは次のとおりです。

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

これにより、ユーザーが行ったすべての完了したトランザクションが復元されます。トランザクションごとに、このSKPaymentTransactionObserverメソッドが呼び出されます(ユーザーが購入するたびに同じメソッドも呼び出されます)。

    - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
        for (SKPaymentTransaction *transaction in transactions) {
            switch (transaction.transactionState) {
                case SKPaymentTransactionStatePurchased:
                    [self completeTransaction:transaction];
                    break;
                case SKPaymentTransactionStateFailed:
                    [self failedTransaction:transaction];
                    break;
                case SKPaymentTransactionStateRestored:
                    [self restoreTransaction:transaction];
                    break;              
                default:
                    break;
            }
        }

    }

transactionStateを使用すると、トランザクションが最初の購入( )であったか、必要に応じてSKPaymentTransactionStatePurchased復元( )であったかを区別できます。SKPaymentTransactionStateRestored

復元がいつ終了するかを知る必要がある場合は、次を使用できます。

- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
   NSLog(@"%d items restored", queue.transactions.count);
}
于 2012-07-09T15:43:57.227 に答える