1

アプリ内購入が復元されると、次のデリゲート メソッドが呼び出されます。

-(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {

    NSLog(@"%@", queue.transactions);

    for (SKPaymentTransaction *transaction in queue.transactions) {

        //restore

    }

}

queue.transactions復元された製品は 1 つだけですが、多くのトランザクションがあります(この例では、20 を超えるトランザクションがログに書き込まれています)。なんで?トランザクションは 1 つだけであるべきではありませんか? サーバーから製品のダウンロードを開始すると、アレイ内のトランザクションが多すぎるため、20 回のダウンロードが行われることになります。

ここに画像の説明を入力

4

1 に答える 1

1

メソッドでトランザクションを処理することになっていますpaymentQueue:updatedTransactions:。はpaymentQueueRestoreCompletedTransactionsFinished:、それが完了したことを伝えるためにあります。

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
    for (SKPaymentTransaction *transaction in transactions)
    {
        switch (transaction.transactionState)
        {
            case SKPaymentTransactionStatePurchased:
                // process purchase
                break;
            case SKPaymentTransactionStateFailed:
                // process error
                break;
            case SKPaymentTransactionStateRestored:
                // process restored IAP
                break;
        }
    }
}
于 2012-12-21T21:56:03.777 に答える