2013-03-02 2 views
7

Problem: Ich versuche, App-Käufe mit einem Sandbox-Konto zu testen, aber jedes Mal, wenn ich versuche, ein Verbrauchsartikel zweimal zu kaufen, erhalte ich die folgende Fehlermeldung:iOS Sandbox - Ein Verbrauchsartikel kann nicht zweimal gekauft werden

Das passiert nur, wenn ich iOS < benutze 6. Ich habe gelesen, dass dies ein Sandbox-Problem sein kann. Weiß jemand, ob diese Aussage wahr ist?

Ich bin sicher, dass der folgende Aufruf die erste Transaktion abzuschließen gemacht wird:

[[SKPaymentQueue defaultQueue] finishTransaction:transaction] 

Ich habe versucht, auch diesen Anruf in die Warteschlange ohne Glück zu spülen:

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

Ich stelle auch sicher, dass ich vor dem Testen der iAP aus dem iTunes Store ausgeloggt bin. Außerdem habe ich überprüft, dass die Build- und Versionsnummer im Bereich Zusammenfassung meines Ziels in Xcode enthalten sind.

+0

sind Sie zu 100% sicher, dass es ein Verbrauchsprodukt ist ...? – holex

+0

Ja, da bin ich mir sicher. – user2125688

+0

Ich erlebe dies für iOS 6 und 7 und nicht konsumierbare Produkte. Haben Sie herausgefunden, wie Sie das lösen können? – SpaceDog

Antwort

0

Problem ist wahrscheinlich das fehlende Zeile im Code

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

i die gleichen Fehler vor ein paar Tagen. und diese Zeile behebt das Problem für mich. Diese Zeile fügt Beobachter für die In-Apps hinzu.

+0

Versuchte das schon. – user2125688

1

Ich hatte eine ähnliche Situation, dass ich diese Nachricht erhalten würde und dann abstürzen, wenn ich versuchte, es wieder zu kaufen. Für mich sieht es so aus, als wäre dies nur eine Nachricht, die finishTransaction nicht abgeschlossen hat (aus welchem ​​Grund auch immer). Gemäß meinen Protokollen gewährt es eine SKTransactionStateFailed aktualisierte Transaktion, die es mir ermöglicht, die finishTransaction erneut zu senden.

Ich checke dann in meiner App ein, dass es in der Tat die Daten/Kauf BOOL/was auch immer heruntergeladen hat und eine Benutzerschnittstelle präsentieren, wenn sie es erneut herunterladen müssen. Scheint kein Problem mit nachfolgenden Downloads zu haben.

das Krachen zu vermeiden, ich eingeschlossen:

[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];