2012-07-09 4 views
6

Ich arbeite an dieser App mit In-App-Kauf aktiviert. Der glückliche Weg ist alles bedeckt, alles ist in Ordnung, ich versuche, den nicht glücklichen Weg zu erarbeiten.Wie lange wird das Speicherkit unvollendete Transaktionen behalten?

Um es einfach zu sagen, der Kauf ist an eine serverseitige Komponente gebunden. Beim Kauf, wenn die Transaktion im Status "Gekauft" ist, soll ich auf den Server gehen, der das Benutzerkonto aktiviert. Wenn die Anfrage zurückkommt, räume ich dann ein paar Sachen auf und rufe schließlich -finishTransaction: auf der SKPaymentQueue auf.

Der nicht glückliche Pfad ist ziemlich viel, wenn der Server-Aufruf aus irgendeinem Grund fehlschlägt. Netzwerk nicht verfügbar, Netzwerk-Timeout, der Benutzer hat die App direkt nach dem Kauf geschlossen und kurz bevor ich den Server anrufen konnte, nennen Sie ihn.

Meine Tests im 5.1-Simulator mit einem Sandbox-Konto zeigen mir, dass eine nicht abgeschlossene gekaufte Transaktion beim nächsten Start in die Warteschlange zurückkehrt und mein Delegierter ordnungsgemäß damit aufgerufen wird. Aber, nach einer Weile, sagen 5 Minuten zum Beispiel, Boom, weg ist die Transaktion. Angesichts der ganzen Stabilität von Sandbox-Konten, bin ich bereit, das auf die Implementierung des Simulators zu nennen, aber es ist schwer zu sagen.

Was ist der richtige Weg, um mit diesem Problem umzugehen?

Bonusfrage: Wann berechnet Apple tatsächlich jemanden? Klingt wie es sollte nach der App namens -finishTransaction :, aber ich konnte nirgendwo einen Beweis dafür finden.

Danke, /kra

UPDATE: Tests auf physikalisches Gerät, fast eine Stunde, und die Transaktion noch da ist. Sieht so aus, als ob die Transaktionen verschwinden, ist eine Simulator Sache.

Antwort

0

Als ich In-App-Käufe implementierte, gab ich es auf, es im Simulator zu testen. Das Verhalten ist einfach zu unterschiedlich. Testen Sie es auf dem Gerät und sehen Sie, ob es dort funktioniert.

Ich bin auch an Ihrer Frage zum Laden interessiert, da ich mir auch nicht ganz sicher bin (meine App ist noch nicht freigegeben;)).

+0

Danke für Ihre Antwort. Das ist so ziemlich die Schlussfolgerung, zu der ich komme, Sandbox ist völlig unzuverlässig, und Sie müssen einen Vertrauensvorschuss nehmen, bevor Sie sich auf den Weg machen. Einige frühere Tests auf dem Gerät gaben mir den Tipp, dass sie immer wiederkommen würden (und ein bisschen gesunden Menschenverstand zeigt das auch an). Testen auf Geräten ist auch nicht genau zuverlässig, ich hatte meinen Teil der Deinstallation, Neustart, neu installieren, dank Speicher-Kit mit dem gefürchteten Fehler "Kann den Appstore nicht erreichen" Fehler. – kra

+0

Ich muss sagen, dass ich beim Testen auf dem Gerät nicht wirklich in Schwierigkeiten geriet. Ich bin diesem Leitfaden sehr genau gefolgt: http://troybrant.net/blog/2010/01/in-app-churches-a-full-walkthrough/. Das einzige, was mich manchmal nervt, ist, dass es ungültige Produkt-IDs zurückgibt, nachdem ich ein paar Neukompilierungen gemacht habe - wenn das passiert, muss ich nur noch löschen und neu erstellen/laufen. Die gesamte Code-Zeichen-Beziehung zu Produkt-IDs ist für mich auch immer noch magisch - zum Beispiel verstehe ich nicht, warum es funktioniert, wenn ich ein Adhoc-Testrollout mit der Debug-Signierung mache. –

+0

Ja, dieser Teil ist ziemlich in Ordnung, mein Problem war mehr mit dem Wechsel zwischen Sandbox-Konten. Irgendwann gibt StoreKit einfach auf, gibt ständig einen falschen Fehler zurück, egal was du tust, und du musst das Telefon ziemlich neustarten/neustarten/neustarten. Ich kann mich an kein Problem mit der Codesignatur erinnern, Sie müssen nur darauf achten, ein bestimmtes Bereitstellungsprofil zu verwenden, kein Platzhalter. Solange die Artikel verfügbar sind, sollte es unabhängig vom Zertifikat funktionieren. – kra

Verwandte Themen