2016-08-05 13 views
1

Ich erstelle ein iOS, das IAP Käufe von Punkten verbraucht. Wie wir wissen, gibt es keine Wiederherstellungsoption mit Verbrauchsmaterialien. Ich möchte sicherstellen, dass, wenn Benutzer zahlt, dass sie ihre Punkte erhalten, in DB gespeichert wird und umgekehrt. Wie schützt man sich davor, die Verbindung zwischen dem Laden und Speichern in der DB zu verlieren?Swift IAP sicherstellen, dass Zahlungen an DB gehen

Ich versuche zu vermeiden, mit NSUserDefaults, nur für den Fall, dass der Benutzer nach dem Kauf, löschen Sie die App.

Diese Methode ist, dass, wenn sie aufgerufen wird ein Kauf erfolgreich/fehlgeschlagen:

func paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) { 

Wenn ich an die DB verzögern Speichern bis nach diese Methode SKPaymentTransactionState.Purchased und verlieren Konnektivität (nicht meine DB erreichen), die Der Benutzer zahlt und Punkte werden nicht vergeben.

Ich muss sicherstellen, dass ich Benutzer belaste und neue Benutzerpunkte in DB speichern. Sie müssen nicht beide sofort passieren, aber ein Mechanismus, um zu überprüfen, wann die Verbindung wieder hergestellt ist.

enter image description here

+1

Sie können NSUserDefaults als temporären Speicherbereich verwenden, bis die Daten erfolgreich in die DB hochgeladen wurden, und dann aus NSUD entfernen. – TheValyreanGroup

+0

Ja, das war mein erster Stich. Ich mochte diese Option für das oben erwähnte Szenario nicht (Benutzer zahlt und dann App killt), während ich aufgrund fehlender Verbindung nicht in der DB speichern konnte. Ein weiteres Problem ist der Sicherheitsgrund. Ich wollte dem Benutzer nicht die Möglichkeit geben, zu sehen, wie ich meine Produktkennungen strukturiere. – user1019042

+0

Sicherheit spielt keine Rolle, es sei denn, Sie haben mit kaputten Geräten zu kämpfen. Sie können mit Ihren Produkt-IDs nichts anfangen. – TheValyreanGroup

Antwort

0

Sie über die Validierung Quittungen sehen konnte here, können sie mit dem App Store oder lokal validiert werden, würden Sie den besten Ansatz für Sie wählen müssen. Prost.

+0

Ja, ich verwende die Quittungen bereits, um Einkäufe zu verifizieren. Das Problem damit, dass es mir die Transaktion nicht erzählt, es wird es im Voraus speichern, um mir zu erlauben, den Querverweis zu machen. Es kann den Benutzer laden und wenn ich versuche, es zu lesen, ist das Netzwerk ausgefallen! Ich möchte aus Sicherheitsgründen keinen lokalen Speicher pro @ TheValyreanGroup-Vorschlag verwenden. – user1019042

Verwandte Themen