React-native-iap: buySubscription wird beim Ändern von Abonnements in iOS nicht aufgelöst

Erstellt am 26. Sept. 2018  ·  14Kommentare  ·  Quelle: dooboolab/react-native-iap

Version von react-native-iap

2.2.2

Plattformen, auf denen Sie den Fehler hatten (IOS oder Android oder beides?)

iOS

Erwartetes Verhalten

buySubscription sollte aufgelöst werden, wenn von einem monatlichen zu einem jährlichen Abonnement gewechselt wird, anstatt einen Fehler abzulehnen und zurückzugeben, wodurch die catch-Klausel erzwungen wird.

Tatsächliches Verhalten

Wenn Sie derzeit einen Plan abonniert haben, führt der Wechsel zu einem anderen dazu, dass buySubscription den folgenden Fehler abfängt und zurückgibt:
screen shot 2018-09-27 at 1 21 10 am

Getestete Umgebung (Emulator? Reales Gerät?)

Echtes Gerät, iPhone 6

Schritte zum Reproduzieren des Verhaltens

Dies tritt auf, wenn die Dialogfelder zum Ändern des Abonnements in der App angezeigt werden und Sie gefragt werden, ob Sie von Ihrem aktuellen Abonnement zu dem neu ausgewählten wechseln möchten. Wenn Sie durch diesen Dialog tippen, wird der Fehler anstelle des erwarteten gelösten Versprechens ausgegeben. Es scheint, dass dieser Anwendungsfall nicht berücksichtigt wurde oder so.

Dies ist für mich im Moment ein Problem, da es dann keine Möglichkeit gibt, zu bestätigen, dass sie tatsächlich Quittungen für diese Fälle gekauft oder validiert haben. Bitte lassen Sie mich wissen, wenn Sie eine Problemumgehung oder Lösung kennen oder wenn ich etwas tun kann, um zu helfen (obwohl ich keine Obj-C-Erfahrung habe). Die einzige mögliche Problemumgehung, an die ich im Moment denken kann, ist, wenn buySubscriptions einen Fehler zurückgibt, diesen Fehler überprüft und wenn er mit diesem Fehler übereinstimmt, den Kauf bestätigt. Dies ist jedoch sehr gefährlich, da dadurch die Bestätigung des Belegs unmöglich wird und ein anderer Fehler (z. B. die Unfähigkeit, eine Verbindung zum Server herzustellen, oder etwas anderes) denselben Fehlercode erzeugen kann, wodurch der Benutzer das Abonnement erhält, ohne dafür bezahlen zu müssen. Mit anderen Worten, ich kann mir im Moment keine praktikablen Problemumgehungen vorstellen. Vermisse ich hier etwas? Gibt es einen Grund, warum ich das Versprechen von buySubscriptions nicht lösen müsste? Wäre sehr dankbar, von jemandem zu hören.

BEARBEITEN : Dies kann eine offensichtliche Folge dessen sein, was ich bereits beschrieben habe. Nach dem Versuch, Ihr Abonnement zu ändern, wird dieser Kauf jedoch nicht zu Ihrer Kaufhistorie hinzugefügt. Auf der Benutzerseite gibt es keine Hinweise darauf, dass dieser Kauf nicht erfolgreich ist. Der Benutzer führt den Kauffluss der Dialogfelder erfolgreich durch und schließt mit einem Hinweis: "Sie sind fertig".

EDIT2 : Manchmal funktioniert es, aber ich bin mir noch nicht sicher, wie ich es reproduzieren soll. Ich melde mich zurück, wenn ich einen Weg finde. Wenn es funktioniert, fordert das erste Dialogfeld mein Passwort an und geht dann normal weiter, als ob ich noch kein anderes Abonnement habe, im Gegensatz zum ersten Dialogfeld "Kauf bestätigen" und fragt, ob ich mein Abonnement ändern möchte Was erscheint, wenn es nicht funktioniert? Wenn es funktioniert, wird das gekaufte Abonnement wie erwartet zu meiner Kaufhistorie hinzugefügt.

EDIT3 : Ich habe

🍗 enhancement 🐛 bug 📱 iOS

Hilfreichster Kommentar

Ich habe es mir heute noch einmal angesehen und ich glaube, ich habe etwas Bemerkenswertes gefunden. Was zu passieren scheint, ist das, was in diesem Fehler gefunden wurde: https://github.com/bizz84/SwiftyStoreKit/issues/269. Beim Wechsel zwischen automatisch erneuerten Abonnements in derselben Gruppe wird die Transaktion nicht ausgeführt, da dem Benutzer erst nach Ablauf des aktuellen Abonnements eine Rechnung gestellt wird. Es wurde jedoch erfolgreich registriert und die Zahlung wird verarbeitet, sobald das aktuelle Abonnement abgelaufen ist, jedoch erst dann. Daher ist die Rückgabe der Transaktion fehlgeschlagen, da noch keine Transaktion stattfindet. Ich glaube also nicht, dass im Zahlungsprozess tatsächlich etwas schief geht. Es ist nur so, dass die zurückgesendete Transaktion als Fehler registriert wird. Aber ich muss das noch testen, da ich gerade darauf gestoßen bin und mein Debugger sich verhält und es spät wird, also werde ich erst morgen versuchen, es zu klären. Wäre großartig, wenn jemand in der Zwischenzeit versuchen könnte, dies zu bestätigen (dh indem er zwischen Abonnements wechselt und dann prüft, ob die Transaktion für das zweite in Ihrer Kaufhistorie erscheint, sobald das erste abgelaufen ist, oder so ähnlich). Wenn dies der Fall ist, wäre es großartig, wenn wir einen Weg finden könnten, damit umzugehen. Wenn der Fehler, den es generiert, spezifisch für diesen Prozess ist, können wir ihn einfach als Rückgabewert des Versprechens weitergeben, damit wir ihn richtig behandeln können (z. B. keine Fehlermeldung für den Benutzer generieren, Benutzerabonnementinformationen aktualisieren). Würde gerne jemandes Gedanken darüber hören, ob dies überprüft wird und wie es weitergeht.

Alle 14 Kommentare

Könnten Sie jetzt die neueste Version ausprobieren, die 2.3.15 ?

Ja, ich werde es heute irgendwann mal ausprobieren

@kevinEsherick Was ist dein Ergebnis für diesen?

Funktioniert immer noch nicht. Wenn ich monatlich abonniert bin und auf jährlich umschalte, trifft es die catch-Klausel. Es gab einige Male, in denen es zufällig funktioniert hat, aber noch keinen Weg gefunden hat, sich zu reproduzieren. Ich werde Sie über das, was ich finde, auf dem Laufenden halten und bitte das Gleiche für mich tun. Vielen Dank!

@kevinEsherick Wie haben Sie das Abonnement "

Können Sie unter iOS kein Abonnement wechseln, indem Sie in der Einstellungs-App Ihre Abonnements verwalten und dann ein anderes Produkt innerhalb derselben Gruppe auswählen?

@JJMoon Nein, ich kaufe einfach das Monatsabonnement in der App und dann das Jahresabonnement in der App. Sie erneuern automatisch Abonnements in derselben Abonnementgruppe. Wenn sich bei iTunes Connect zwei Abonnements (A und B) in derselben Gruppe befinden, soll der Kauf von B, während Sie A abonniert haben, A automatisch kündigen und Sie B abonnieren. Glauben Sie, dass dieses Paket diese Funktion nicht unterstützt? Wenn ja, können wir einen Weg finden, dies umzusetzen?

Ich stoße auch auf dieses Problem. Irgendein Fortschritt?

Ich hatte in letzter Zeit nicht viel Zeit, mich damit zu befassen. Ich werde mich bald wieder darum kümmern.

Wenn ich mir einige anschaue, stelle ich fest, dass Apple die Änderung des Abonnements zumindest teilweise erkennt. Wenn ich beispielsweise von monatlich zu jährlich wechsle, wird das entsprechende Modal mit der Sprache zum Ändern Ihres Abonnements angezeigt. Wenn ich jährlich kaufe, tritt ein Fehler auf und buySubscription wird nicht behoben. ABER, wenn ich zurückkehre, um erneut einen Kauf zu tätigen, diesmal zurück zum monatlichen Abonnement, weiß die Apple-API, dass ich das Jahresabonnement habe, und zeigt erneut das Modal "Möchten Sie Ihr Abonnement ändern ..." an. Wie sich dies in der Produktion manifestiert, weiß ich noch nicht, da dies alles Sandbox ist. Ich werde mich heute Abend irgendwann näher damit befassen, aber dies könnte bedeuten, dass die Dinge bei Apple in Ordnung sind und dass es sich nur um einen Fehler auf der Client-Seite handelt. Wenn dies der Fall ist, ist dies möglicherweise kein kritischer Fehler mehr, es ist jedoch dennoch eine Korrektur erforderlich.

Ich habe es mir heute noch einmal angesehen und ich glaube, ich habe etwas Bemerkenswertes gefunden. Was zu passieren scheint, ist das, was in diesem Fehler gefunden wurde: https://github.com/bizz84/SwiftyStoreKit/issues/269. Beim Wechsel zwischen automatisch erneuerten Abonnements in derselben Gruppe wird die Transaktion nicht ausgeführt, da dem Benutzer erst nach Ablauf des aktuellen Abonnements eine Rechnung gestellt wird. Es wurde jedoch erfolgreich registriert und die Zahlung wird verarbeitet, sobald das aktuelle Abonnement abgelaufen ist, jedoch erst dann. Daher ist die Rückgabe der Transaktion fehlgeschlagen, da noch keine Transaktion stattfindet. Ich glaube also nicht, dass im Zahlungsprozess tatsächlich etwas schief geht. Es ist nur so, dass die zurückgesendete Transaktion als Fehler registriert wird. Aber ich muss das noch testen, da ich gerade darauf gestoßen bin und mein Debugger sich verhält und es spät wird, also werde ich erst morgen versuchen, es zu klären. Wäre großartig, wenn jemand in der Zwischenzeit versuchen könnte, dies zu bestätigen (dh indem er zwischen Abonnements wechselt und dann prüft, ob die Transaktion für das zweite in Ihrer Kaufhistorie erscheint, sobald das erste abgelaufen ist, oder so ähnlich). Wenn dies der Fall ist, wäre es großartig, wenn wir einen Weg finden könnten, damit umzugehen. Wenn der Fehler, den es generiert, spezifisch für diesen Prozess ist, können wir ihn einfach als Rückgabewert des Versprechens weitergeben, damit wir ihn richtig behandeln können (z. B. keine Fehlermeldung für den Benutzer generieren, Benutzerabonnementinformationen aktualisieren). Würde gerne jemandes Gedanken darüber hören, ob dies überprüft wird und wie es weitergeht.

Ich hoffe, dass dieses Problem mit den von mir genannten Methoden behoben werden kann.
Schließen...

Haben Sie das gleiche Verhalten, irgendwelche Schritte, um dies zu beheben?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen