In-App-Kauf (IAP) Prozess zu sein scheint Absturz der app beim Start für einen von meinen Usern
Arbeite ich mit einem Benutzer meiner app Auftritt, ist Abstürze beim Start der app. Wir glauben, es hat etwas zu tun mit der in-app-Kauf, aber ich habe nicht in der Lage, die Ursache zu ermitteln, so dass ich dachte, ich würde es bringen, hier (für alle anderen Benutzer mit dem ich gesprochen habe, die Dinge scheinen zu funktionieren nur fine).
Zurück an den Benutzer mit dem problem, Sie sagt, seit Sie den Kauf der in-App-purchase, die app stürzt nach dem Start. Und nach dem Absturz das Gerät Häufig wird der Benutzer aufgefordert, geben Sie Ihre Benutzer-ID und das Kennwort (als wenn es versucht, um den Kauf wieder). Wir haben versucht, Neuinstallation der app, ein Update auf iOS 7 aktualisieren der app selbst...kein Glück.
War Sie so nett und senden mir ein paar crash-logs, die ich unten kopiert. Jeder input ist herzlich willkommen!
Folgte ich Ray Wenderlich ist IAP in iOS 6 tutorial, ob das hilft...wieder keine andere gemeldete Probleme, außer diesem einen, das macht mich Frage mich, ob etwas zu rekapitulieren, die während des Kauf-Prozesses.
Incident Identifier: 1E0C36A9-C7EC-48D7-9BB8-D56F6203D62E
CrashReporter Key: 2ac3185fb0d2c64d11247cccfa4a55af32fd5462
Hardware Model: iPhone4,1
Process: MetricMe [9322]
Path: /var/mobile/Applications/847DC898-FD57-40F5-98F2-6C361DC7DECC/MetricMe.app/MetricMe
Identifier: com.anthonydubis.metricme
Version: 3.0.5 (3.0.5)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2013-10-04 13:48:13.129 -0400
OS Version: iOS 7.0.2 (11A501)
Report Version: 104
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Triggered by Thread: 0
Last Exception Backtrace:
0 CoreFoundation 0x2ebf9f4e __exceptionPreprocess + 126
1 libobjc.A.dylib 0x38fd26aa objc_exception_throw + 34
2 CoreFoundation 0x2eb37c12 -[__NSSetM addObject:] + 558
3 MetricMe 0x00069fc4 -[IAPHelper provideContentForRestoredProductIdentifier:] (IAPHelper.m:172)
4 MetricMe 0x00069ce8 -[IAPHelper restoreTransaction:] (IAPHelper.m:146)
5 MetricMe 0x00069b14 -[IAPHelper paymentQueue:updatedTransactions:] (IAPHelper.m:124)
6 StoreKit 0x312fddc8 __NotifyObserverAboutChanges + 80
7 CoreFoundation 0x2eb2d714 CFArrayApplyFunction + 32
8 StoreKit 0x312fdd64 -[SKPaymentQueue _notifyObserversAboutChanges:sendUpdatedDownloads:] + 124
9 StoreKit 0x312fe646 -[SKPaymentQueue _processUpdates:trimUnmatched:sendUpdatedDownloads:] + 1022
10 StoreKit 0x312fed1c -[SKPaymentQueue _setTransactionsWithReply:] + 124
11 StoreKit 0x312fd906 __38-[SKPaymentQueue _establishConnection]_block_invoke_2 + 58
12 libdispatch.dylib 0x394b5d76 _dispatch_call_block_and_release + 6
13 libdispatch.dylib 0x394b5d62 _dispatch_client_callout + 18
14 libdispatch.dylib 0x394bc7bc _dispatch_main_queue_callback_4CF$VARIANT$mp + 264
15 CoreFoundation 0x2ebc481c __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 4
16 CoreFoundation 0x2ebc30f0 __CFRunLoopRun + 1296
17 CoreFoundation 0x2eb2dce2 CFRunLoopRunSpecific + 518
18 CoreFoundation 0x2eb2dac6 CFRunLoopRunInMode + 102
19 GraphicsServices 0x3384e27e GSEventRunModal + 134
20 UIKit 0x313cfa3c UIApplicationMain + 1132
21 MetricMe 0x00043842 main (main.m:16)
22 libdyld.dylib 0x394daab2 tlv_initializer + 2
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x395911fc __pthread_kill + 8
1 libsystem_pthread.dylib 0x395faa2e pthread_kill + 54
2 libsystem_c.dylib 0x39541ff8 abort + 72
3 libc++abi.dylib 0x38870cd2 abort_message + 70
4 libc++abi.dylib 0x388896e0 default_terminate_handler() + 248
5 libobjc.A.dylib 0x38fd291e _objc_terminate() + 190
6 libc++abi.dylib 0x388871c4 std::__terminate(void (*)()) + 76
7 libc++abi.dylib 0x38886a18 __cxa_throw + 112
8 libobjc.A.dylib 0x38fd277e objc_exception_throw + 246
9 CoreFoundation 0x2eb37c12 -[__NSSetM addObject:] + 558
10 MetricMe 0x00069fc4 -[IAPHelper provideContentForRestoredProductIdentifier:] (IAPHelper.m:172)
11 MetricMe 0x00069ce8 -[IAPHelper restoreTransaction:] (IAPHelper.m:146)
12 MetricMe 0x00069b14 -[IAPHelper paymentQueue:updatedTransactions:] (IAPHelper.m:124)
13 StoreKit 0x312fddc8 __NotifyObserverAboutChanges + 80
14 CoreFoundation 0x2eb2d716 CFArrayApplyFunction + 34
15 StoreKit 0x312fdd64 -[SKPaymentQueue _notifyObserversAboutChanges:sendUpdatedDownloads:] + 124
16 StoreKit 0x312fe646 -[SKPaymentQueue _processUpdates:trimUnmatched:sendUpdatedDownloads:] + 1022
17 StoreKit 0x312fed1c -[SKPaymentQueue _setTransactionsWithReply:] + 124
18 StoreKit 0x312fd906 __38-[SKPaymentQueue _establishConnection]_block_invoke_2 + 58
19 libdispatch.dylib 0x394b5d78 _dispatch_call_block_and_release + 8
20 libdispatch.dylib 0x394b5d64 _dispatch_client_callout + 20
21 libdispatch.dylib 0x394bc7bc _dispatch_main_queue_callback_4CF$VARIANT$mp + 264
22 CoreFoundation 0x2ebc481c __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 4
23 CoreFoundation 0x2ebc30f0 __CFRunLoopRun + 1296
24 CoreFoundation 0x2eb2dce2 CFRunLoopRunSpecific + 518
25 CoreFoundation 0x2eb2dac6 CFRunLoopRunInMode + 102
26 GraphicsServices 0x3384e27e GSEventRunModal + 134
27 UIKit 0x313cfa3c UIApplicationMain + 1132
28 MetricMe 0x00043842 main (main.m:16)
29 libdyld.dylib 0x394daab4 start + 0
Bearbeitet, um hinzufügen Linie 172 von IAPHelper:
Es heißt während ein Produkt wiederherstellen und geht in die productIdentifier des IAP. Was interessant ist, dass dies geschieht direkt beim Start der app, das macht mich Frage mich, ob dies ein Szenario, wo die internet-Verbindung ging verloren, während sich die IAP-Kauf-Prozess, und jetzt versucht er es wiederherstellen auf Start.
IAPHelper enthält eine Menge von Methoden für Kauf und Wiederherstellung eines Produkts (auch der Beobachter für die Kauf-Benachrichtigungen). Die sharedInstance aufgerufen, in applicationDidFinishLaunching, so dass es bereit ist zu empfangen Quittungen von Apple. Linie 172 ist, wo die Produkt-id Hinzugefügt wird, _purchasedProductIdentifiers, die eine NSMutableSet Instanz-variable. Würde der Fehler bedeuten, dass etwas falsch ist mit _purchasedProductIdentifiers (NSMutable set sollte initialisiert werden, bevor es hier geht) oder die productIdentifier übergeben? In der Praxis sollten wir niemals an den Punkt kommen, es sei denn, die sharedInstance von IAPHelper erstellt wird, die ist, wo _purchasedProductIdentifiers erstellt.
- (void)provideContentForRestoredProductIdentifier:(NSString *)productIdentifier
{
[_purchasedProductIdentifiers addObject:productIdentifier];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:productIdentifier];
[[NSUserDefaults standardUserDefaults] synchronize];
[[NSNotificationCenter defaultCenter] postNotificationName:IAPHelperProductRestoredNotification object:productIdentifier userInfo:nil];
}
- Was bedeutet die Linie 172 von IAPHelper.m Aussehen? Je mehr Kontext, desto besser.
- Nur fügte einige weitere details.
- Was hat Ihr Problem am Ende? Ich habe das gleiche problem, und es sieht aus wie es ist an der gleichen Stelle. Ich wäre wirklich dankbar zu hören, dass Ihr feedback!
- bitte sehen Sie sich die ausgewählte Antwort unten. Hoffe, das hilft, aber fühlen Sie sich frei zu erreichen, wenn es nicht!
- möglich, Duplikat der Folgende in-app Kauf, die app stürzt auf Start. productIdentifier=null?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wir haben vor kurzem angefangen, sich ähnlich wie crash-reports von einigen unserer Anwender, das Problem ist, dass die Produkt-id übergeben wird, ist hier 'nil', die einen Absturz verursachen, b/c Sie wird als ein Schlüssel und eine hash-müssen berechnet werden, auf der ganzen Linie.
Aber es ist immer noch nicht klar ist uns, warum es manchmal ist 'null'. Aber zumindest der Absturz kann vermieden werden, indem der Schutz vor der Möglichkeit, dass die productId-Spalte kann null mal.
Ich lief in dieses problem heute morgen mit meinem iPhone 5S und einer app. Das problem schien zu sein, verursacht durch mich benötigen, überprüfen Sie das Sicherheits-code auf einem kürzlich Hinzugefügt Kreditkarte, die beim Versuch, eine der in-app-Kauf. Dieser zog mich aus der app in den App Store.
Nach überprüfung meiner security code, wurde ich aufgefordert, um die gekauften in-app-Kauf wieder. Hab ich ja, aber da war ich nicht in der app an der Zeit, die app wurde nicht mitgeteilt, dass ich den Kauf getätigt. Ich wechselte wieder auf die app und verwendet die app Käufe wiederherstellen-option und der moment, den ich trat in mein App-store Kennwort ein, wird die app dann abgestürzt ist und weiterhin Absturz beim start auch nach deinstalliert, das Handy neugestartet und die app neu installiert. Ich selbst habe versucht, das zurücksetzen aller Einstellungen und Abmelden von meinem App Store iTunes-Konto. Nichts verhindert die Abstürze.
Schaute ich mir die crash-stack und es war sehr ähnlich zu der oben eingefügt, mit einem Bündel von StoreKit Einträge im stack. Leider habe ich es nicht speichern Sie den Stapel, bevor die nukleare option (siehe unten). Dies war unter iOS 7.0.3. Es erscheint der Kauf ging durch, als ich installierte die app auf einem anderen Gerät und hat ein Käufe wiederherstellen und das hat geklappt.
Leider die einzige Möglichkeit dieses Problem zu beheben, dass ich gefunden wurde, wischen Sie das Telefon und die Wiederherstellung aus einem backup gemacht vor dem Kauf versucht wurde. Zum Glück für mich, ich hatte nur gesichert in der iCloud etwa 30 Minuten, bevor das passiert, also habe ich eine "löscht Alle Einstellungen und Daten", gefolgt von einer "aus iCloud-Backup Wiederherstellen". Das endete mehrere Stunden, aber nach, dass ich den Kauf wieder und wurde gesagt, dass ich bereits erworben und es funktionierte.
Dass nicht helfen, wer nicht ein Aktuelles backup haben, oder der mit diesem problem ausgeführt hat und weiter mit dem Gerät seitdem. Im Grunde gibt es etwas auf dem Gerät gespeichert, dass ist nicht geklärt durch das entfernen der App oder durch ein "Alle Einstellungen Zurücksetzen". Nur wischen Sie das Gerät behoben werden.
Gehe ich davon aus, was gespeichert wird, ist Teil der "In-app-Kauf", was wird gesichert, so dass sicherungen gemacht, nachdem dies passiert ist wird wahrscheinlich "verdorben", es sei denn, es gibt einen Weg, um Sie zu beheben, manuell mit Hilfe eines Dritten Programm.
Ich würde vorschlagen, Meldung zu bugreport.apple.com. Sie können geben Sie meine details neben der Strecke Spur, wenn Sie wollen.
Ich hatte ähnliche Symptome(app crashed bei jedem start) und das problem war, dass StoreObserver wurde nicht beibehalten, die von der queue:
Lösung war, um dem Betrachter eine Instanz-variable.
Thread mit diesem problem zu tun: App crash auf [[SKPaymentQueue defaultQueue] addTransactionObserver:Beobachter];