17 Stimmen

IOS In App-Kauf fordert zweimalige Anmeldung an

Ich füge In-App-Käufe zu einer meiner Apps hinzu. Wie erforderlich habe ich einen Button hinzugefügt, damit Benutzer gekaufte Artikel erneut herunterladen können. Hier ist die IBAction-Methode dafür:

- (IBAction)touchedButtonUnlockAgain:(id)sender {
    [self.activityIndicator startAnimating];            
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

}

Wenn ich auf diesen Button tippe, erscheint das Standard-Anmeldefenster. Ich gebe meinen Sandbox-Benutzernamen und mein Passwort ein (korrekt, überprüft). Nachdem das Anmeldefenster verschwindet, erscheint es eine halbe Sekunde später erneut. Also melde ich mich erneut mit demselben Benutzernamen und Passwort an (korrekt, überprüft) und DANN werden die Käufe erneut heruntergeladen. Ich habe überprüft, dass dies im Simulator und auf einem Gerät (iOS 6.0 in beiden Fällen) passiert.

Warum werde ich zweimal zur Eingabe meines Benutzernamens / Passworts aufgefordert?

5voto

Nirav Bhatt Punkte 6836

Der einzige Grund dafür könnten nicht abgeschlossene Transaktionen sein - die Geister, die auf ihren finishTransaction Aufruf zur Erlösung warten. Sie können aufgrund von abgemeldeten Benutzer-initiierten Transaktionen existieren, die nicht abgeschlossen werden konnten - oder einfach aufgrund eines plötzlichen App-Abbruchs, bevor sie fertig werden konnten. Im Grunde können unausgeglichene Aufrufe zu addPayment / restoreCompletedTransactions und finishTransaction sie verursachen.

Überprüfen Sie Ihre Delegaten: paymentQueue:RestoreCompletedTransactionsFinished: & paymentQueue:restoreCompletedTransactionsFailedWithError:

Machen Sie irgendetwas zweimal? Erhalten Sie einen Fehler?

Noch etwas zu überprüfen ist: Wann in Ihrem App-Lebenszyklus rufen Sie folgende Anweisung auf?

[[SKPaymentQueue defaultQueue] addTransactionObserver]

Dies ist wichtig, so früh wie möglich aufgerufen zu werden - denn manchmal erscheinen verlorene Transaktionen, die aufgrund eines App-Abbruchs zu Geistern werden, erneut - in der Erwartung, abgeschlossen zu werden. Ohne einen aktiven Beobachter treffen sie nicht auf die updatedTransactions-Methode, die ihr letzter Zugang zum finishTransaction Aufruf ist.

-1voto

Derek Stasiak Punkte 19

Auf Ihrem Telefon versuchen Sie, in Einstellungen/iTunes & App Stores zu gehen und sich bei der dort angegebenen Apple-ID abzumelden. Gehen Sie zurück in Ihre App und versuchen Sie es erneut.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X