SKPaymentTransactionStatePurchased rief mehrere Male durch Fehler

Ich mache einen in-app Kauf, aber ich habe einen bug, ich kann nicht finden wo es herkommt...

Erste von allen, ich habe einen button und wenn Sie darauf klicken, wird meine app-Anforderung des Produkts, fängt die Antwort, Sie zahlen, und Sie bekommen das Produkt (funktioniert alles OK).
Aber hier kommt mein problem. Wenn ich auf die Schaltfläche klicke, um etwas zu kaufen wieder, bekomme ich ZWEI Warnungen, die ich etwas gekauft, ZWEI mal. Auch wenn ich Sie zum Dritten mal, bekomme ich DREI Warnungen, dass ich etwas gekauft, mal DREI, und vier und fünf nach der Anzahl der Male, die ich angeklickt.

So scheint es, wie einige variable hält die Speicherung der Anfragen.. Hier ist mein code:

Dies bestätigt die Produkt-ID

- (void) validateProductIdentifiers
{ 
NSString *monedas = @" ID FROM PRODUCT ";
NSSet *product = [NSSet setWithObject:monedas];

productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:product];

productsRequest.delegate = self;
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[productsRequest start];
NSLog(@"STARTED REQUEST");
}

Dieser verarbeitet die Antwort von Apple

- (void)productsRequest:(SKProductsRequest *)request
 didReceiveResponse:(SKProductsResponse *)response
{


productsRequest=nil;

int found=0;

SKProduct *paraPagar;
skProducts = response.products;

for (SKProduct * skProduct in skProducts) {
             NSLog(@"Found product: %@ %@ %0.2f",
          skProduct.productIdentifier,
          skProduct.localizedTitle,
          skProduct.price.floatValue);
    found=1;

    paraPagar = skProduct;
}
if (found==1){ 
    payment = [SKMutablePayment paymentWithProduct:paraPagar];
    payment.quantity = 1;

    [[SKPaymentQueue defaultQueue]addPayment:payment];

}else{ 

 //error (not relevant code)

}
}

Die Annahme von Zahlungen und finishing-Transaktion

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



for (SKPaymentTransaction *transaction in transactions) {
    switch (transaction.transactionState) {

        case SKPaymentTransactionStatePurchased:
            NSLog(@"BOUGHT");

            [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
            [self completeTransaction:transaction];


            break;
        case SKPaymentTransactionStateFailed:
            NSLog(@"FAILED");
           [[SKPaymentQueue defaultQueue] finishTransaction:transaction];

            [self failedTransaction];
            break;
        case SKPaymentTransactionStateRestored:
            NSLog(@"RESTORED");
            //[self restoreTransaction:transaction];
            [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
        case SKPaymentTransactionStatePurchasing:
            NSLog(@"PURCHASING");
        default:
            break;
    }

}

}

Danken Ihnen sehr für Ihre Zeit!

InformationsquelleAutor mursang | 2013-11-21
Schreibe einen Kommentar