SKPaymentQueue addTransactionObserver fragt beim Start nach dem In-App-Kauf nach dem App Store-Passwort
Meine app ist über in-app-Käufe, und die meisten meiner Benutzer kaufen können Prima ohne Probleme. Für diese Leute, mein app-downloads der Inhalte nach dem Kauf ist erfolgreich, und Sie sind glücklich.
Jedoch für eine wachsende Zahl von meine Nutzer, sobald Sie eine erfolgreiche in-app-Kauf werden Sie gebeten, Ihre App Store Kennwort jedes mal, wenn die app startet danach. Ich glaube, dies geschieht über den Aufruf von:
[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];
die rufe ich auf-Start-up in übereinstimmung mit Schritt 6 in apples in-app-Kauf-guide:
- archiviert guide: https://web.archive.org/web/20130515222703/https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/AddingaStoretoYourApplication/AddingaStoretoYourApplication.html
- eigentlichen guide: https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/DeliverProduct.html#//apple_ref/doc/uid/TP40008267-CH5-SW4
Meine Vermutung ist, dass aus irgendeinem Grund, apples in-app-Kauf-Server nicht registriert, dass die Transaktion erfolgreich abgeschlossen - obwohl ich call
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
wenn die Transaktion abgeschlossen ist und mein content wurde erfolgreich heruntergeladen.
2 Fragen:
- Ist jemand anderes sehen?
- Hat jemand eine vorgeschlagene Lösung?
BOUNTY BEARBEITEN:
Sein eine Transaktion, die mit einer anderen Apple-ID. Das ist, warum es nicht beendet werden, es sei denn, Sie geben Sie die richtigen Anmeldeinformationen in das Dialogfeld ein. Die Frage sollte entweder:
- Wie kann ich verhindern, dass diese Toten Transaktionen (Transaktion wurde nicht beendet, der Benutzer hat kein Netzwerk, mittlerweile ändert App-ID)?
- Wie können Sie beschneiden die
SkPaymentQueue
?
[[SKPaymentQueue defaultQueue] addTransactionObserver:paymentProcessorDelegate];
. Dies geschieht sporadisch, und nur heute, so erwarte ich, dass das problem zu "reparieren sich selbst" irgendwie später. InformationsquelleAutor der Frage montuno | 2011-02-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem.stellen Sie sicher, dass Sie anrufen
für alle drei Staaten von den Transaktionen: SKPaymentTransactionStatePurchased, SKPaymentTransactionStateRestored, SKPaymentTransactionStateFailed.
InformationsquelleAutor der Antwort Ilker Baltaci
Ich hatte das gleiche problem, dass der login-prompt kommen bis auf den Anruf:
Wäre es auch kommen jedes jetzt und dann, selbst wenn ich nicht mit meiner app auf dem Homescreen oder in anderen apps), die war wirklich nervig. Schaut sich um, scheint es so viele musterantworten zu diesem Thema, aber ich fand schließlich eine Lösung aus einer Kombination von dem, was ich gesammelt habe.
Hinweis: Bevor Sie Schritt 1, die ich entfernt hatte und der test-sandbox-account in iTunes Connect. Ich bin mir nicht sicher, ob das Auswirkungen auf die Lösung.
Um das problem zu lösen dies ist, was ich getan habe:
Das ist es. Dann ab auf die login-prompt aufgehört, wenn ich lief meine app und auch aufgehört, bis zu zufälligen Zeiten.
Hoffe, das hilft!
InformationsquelleAutor der Antwort doraemon
Ich vermute, dass dies ein korrektes Verhalten. Wenn Sie einen Delegaten SKPaymentQueue versuchen, um zu überprüfen, ob es gibt einige Geschäfte zu beenden. Es dürfen keine nicht abgeschlossenen Geschäfte, aber die Tatsache der Prüfung erfordert den login in iTunes. Und ich denke, Sie können damit nichts anfangen.
Es hat in der Regel einen Sinn, aber es ist ziemlich lästig für Benutzer-set-up-fragt nach einem Passwort für jede Transaktion (einige Kind-Schutz zum Beispiel). Also ist der einzige Weg, um mit ihm zu kämpfen, zu setzen, zu delegieren, ausdrücklich, wenn Sie eine Anfrage iTunes. Zum Beispiel können Sie fügen Sie eine Schaltfläche wie "Wiederherstellen" meine Einkäufe". Nicht sehr schön, aber auf jeden Fall weniger nervig.
InformationsquelleAutor der Antwort Maxim Lavrov
Gibt es ein problem namens "endlos-Schleife". Es war großes Thema damals in den frühen Tagen der auto-erneuerbaren Energien bei, für etwa eine Woche die Server nicht beschränken, Verlängerungen zu 5. Ein Gerät, das eine Transaktion nicht an finishTransaction erhalten, dass die Transaktion geliefert, um das Gerät etwa einmal pro Woche, bis zu diesem bestimmten test user sich anmeldet, und fordert finishTransaction. Schalten Sie den Flugmodus können Sie "clear", diese Transaktionen für eine Woche - aber Sie kommen zurück.
InformationsquelleAutor der Antwort Peter B. Kramer
NICHT LÖSCHEN, HIER DIE ANTWORT. Es war dies insbesondere die Stackoverflow-Frage, Irre mich und verdarb mich für Tage.
Ich setze dieses hier, denn es gibt eine Menge von wirklich schlechten Antworten, die geben FALSCHE Informationen wie das problem zu beheben.
NICHT:
TUN:
Das ist es, Beenden Sie alle Transaktionen! Sonst werden Sie direkt auf die Hölle des Endlosen Schleife von Zeichen in den Anfragen jedes einzelne mal, wenn Sie Ihre App-Starts auf das Gerät.
InformationsquelleAutor der Antwort Cliff Ribaudo
Ich habe das gleiche problem beim testen IAP.
Getestet habe ich mit 3 test-account , die app ist, weiter zu Fragen, für Passwort für beide Accounts. auch wenn ich Sie nicht berühren Sie eine beliebige Kauf - /restore-button oder addTransactionObserver.
Ich denke, das ist, weil einige frühere Transaktion nicht abgeschlossen ist richtig,
aber
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
können nicht helfen überhaupt.also hier ist was ich tun, um dieses problem zu lösen:
speichern Fragen werden-I input 6-mal für 3 Accounts--bis es nie Fragen
wieder.
inspiriert von Folge erwartet, wenn Sie iTunes verwenden test user
InformationsquelleAutor der Antwort highwing
Ich es behoben, indem löschen des iTunes Connect-test-Benutzer-account im Zusammenhang mit diesem Thema. App tatsächlich gebeten, wieder anmelden, aber dann ist es verschwunden (ich habe auch die app gelöscht, iPhone neu gestartet und angemeldet, wie eine normale non-sandbox-Benutzer, eine wirkliche Wiederherstellung in andere nicht-sandbox-app und dann startete die app)
InformationsquelleAutor der Antwort Maciek Czarnik
Wenn jemand dies sah und ist mit GoogleMobileAds.Rahmen dann können Sie auch aufrufen müssen,
in
-application:didFinishLaunchingWithOptions:
InformationsquelleAutor der Antwort planetmik
Scheint es ein unlösbares Problem 🙂 ich werde senden Sie eine Anfrage an den Apple support...
InformationsquelleAutor der Antwort Rene Berlin
Löschen und neu-installieren der app wird auch entfernen Sie alle alten Transaktionen, die mit einem anderen itunes-Konto. Wenn Sie immer noch sehen, verbuchten Transaktionen der notification queue ist, dann haben Sie wahrscheinlich hatte einige Zweigstelle in Ihrer Logik, nicht nennen finishTransaction.
Müssen Sie anrufen finishTransaction auf alle Transaktionen, gebucht werden, die paymentQueue:updatedTransactions:, auch diejenigen, die mit SKPaymentTransactionStateFailed.
InformationsquelleAutor der Antwort pschwamb
Fehler im Zusammenhang mit in-app-Käufe fest in das iOS update 5.1.1
http://support.apple.com/kb/DL1521
InformationsquelleAutor der Antwort user513790
Überprüfen Sie die folgenden so hatte ich es in meinem viewDidLoad-Methode. Ich hatte eine app abgelehnt, da apple wollte, dass ich aus nicht-Verbrauchsmaterial, Verbrauchsmaterial, jedoch verließ ich die folgende Zeile in meine viewDidLoad-Methode: (ich dachte, der Passwort-prompt war ein Problem mit dem vertauschen von den test-user zu normal-user zurück zu dem test-user)
Einmal entfernt die Anforderung für ein Kennwort gestoppt.
Und ich habe Links:
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
und die app wurde nun genehmigt Prima.
InformationsquelleAutor der Antwort timv
Wissen Sie, ich habe dieses problem gelöst, indem eine Veränderung in meinem updatedTransactions. Ich habe nicht fügen Sie die
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
für alle Situationen.InformationsquelleAutor der Antwort linka
Hier ist, wie kann ich konsequent zu reproduzieren und beheben Sie dieses Problem:
iOS 8.4, Entwicklung build der app.
1) Verwenden Sie einen test(sandbox) Apple-Account.
2) Wiederherstellen erworben Transaktionen.
3) schließen Sie Sofort das app.
4) Log out-of-test-account (über die Einstellungen)
5) app Starten
Nun jedes mal, wenn ich starte die app, es öffnet sich das "login" - Formular. Es spielt keine Rolle, wenn ich das Passwort eingeben oder nicht. Es spielt keine Rolle, wenn ich Einkäufe zu machen oder wiederherstellen der Einkäufe. Es spielt keine Rolle, wenn ich löschen und neu installieren der app. Jedes mal, wenn ich die app starten, den iTunes login präsentiert wird.
Update: Festplatte starten Sie das Gerät neu.
Hier ist, was ich nicht weiß. Wird das geschehen in einer Produktionsumgebung (veröffentlicht app und tatsächliche apple-login)? Ich hoffe nicht.
InformationsquelleAutor der Antwort user3335999