2017-01-30 4 views
1

diese Aussage in Apfel Dokumentation Gefunden:Wie man richtig Erneuerung der autorenewable Abonnements behandeln (iOS)

Nach einem Abonnement erfolgreich erneuert wird, fügt Shop Kit eine Transaktion für die Erneuerung der Transaktionswarteschlange. Ihre App überprüft die Transaktionswarteschlange beim Start und behandelt die Erneuerung auf die gleiche Weise wie jede andere Transaktion.

Wenn ich dies tun, nur beim Start:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 

Nichts geschieht - Abonnement nicht erneuert wird (Test-Modus).

wenn ich

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

hinzufügen Dann läuft es über komplette Geschichte bestellt, die auch nicht das, was ich will.

Was ist der richtige Weg, damit umzugehen?

Antwort

2

Eine Sache, die Sie verstehen müssen, wenn Sie automatisch verlängerbare Abonnements in einer Sandbox-Umgebung testen, manchmal wird das Abonnement nicht erneuert und Sie erhalten keine Verlängerungsanrufe aus dem Speicher.

Dies ist normal in Sandbox und Aufruf restoreCompletedTransactions in Sandbox-Umgebung manchmal löst es die Erneuerung auf dem Store. Die Dauer für das Abonnement selbst unterscheidet sich in der Sandbox: Hier ist eine Tabelle mit der Dauer der im Sandkasten:

enter image description here

Nur [[SKPaymentQueue defaultQueue] addTransactionObserver:self] hinzufügen, wenn die App startet und in der Produktion wird es erneuert und Sie werden Anrufe bekommen.

+0

Das ist der Punkt, dass ich keine Anrufe bei der Erneuerung bekomme, auch wenn ich Transaktion Beobachter bei Start hinzufügen –

1

Apple in-App-Kauf storkit Dokument: -

Nach einem Abonnement erfolgreich erneuert wird, fügt Shop Kit eine Transaktion für die Erneuerung in die Transaktionswarteschlange. Ihre App überprüft beim Start die Transaktionswarteschlange und wickelt die Erneuerung auf die gleiche Weise ab wie jede andere Transaktion.

Was bedeutet, Wenn der Benutzer das Abonnement automatisch erneuert wird und zu diesem Zeitpunkt unsere App nicht ausgeführt wird, hinzugefügt Apple, dass Transaktion in Transaktionswarteschlange erneuert. Wenn Sie die App öffnen, können wir diese erneuerten Transaktionsdetails aus der Transaktionswarteschlange abrufen.

Es gibt eine andere Aussage in StoreKit Dokument wie erwähnt ist: -

Beachten Sie, dass, wenn Ihre Anwendung bereits ausgeführt wird, wenn das Abonnement erneuert, wird die Transaktion Beobachter nicht genannt; Ihre App erfährt beim nächsten Start von der Verlängerung.

Lösung: Wie Auto-Erneuerung Abonnement behandeln?

SKPaymentQueue.defaultQueue().addTransactionObserver(SubscriptionObserverClassReference) 

& zum Verifizieren Abonnement, zwei Möglichkeiten zur Verfügung:

1) Unter Verwendung -:

Laut Apple StoreKit Best Practices, sollten wir unter der Linie in AppDelegate der "didFinishLaunchingWithOptions" hinzufügen Server: Legen Sie den Cron-Job fest, der das Ablaufdatum des Abonnements für Benutzerabonnements überprüft. So können wir anhand des Ablaufdatums erkennen, ob ein Benutzer-Abonnement erneuert wurde oder nicht.

2) Verwendung von StoreKit Observer: - Jedes Mal, wenn das Benutzerabonnement erneuert wird, erhalten wir eine neue Transaktionsinformation. Auf dieser Grundlage können wir entsprechend handeln.

+0

Ihre Lösung für das Problem macht keinen Sinn: Wenn die Transaktion Beobachter nicht aufgerufen wird, löst das Hinzufügen einer Transaktion Beobachter nicht die Problem, dass während der Ausführung der App keine Transaktion stattfindet. Kannst du erklären, was du meinst? – JanApotheker

0

Die Kommentatoren und die Dokumentation hatten Recht: Es reicht aus, der PaymentQueue beim Start eine Transaktionsbeobachtung hinzuzufügen. In meinem Fall wurde die Verlängerung für den Sandbox-Benutzer, den ich die ganze Zeit benutzt habe, nicht ausgelöst. Ich habe das neue erstellt und es hat funktioniert!

Verwandte Themen