2016-09-30 42 views
5

Moja aktualizacja aplikacji została odrzucona. W wiadomości o odrzuceniu napisano "Awaria aplikacji przy uruchomieniu". Następnie wypróbowałem swoją aplikację, ale nie mogłem jej zepsuć. Użyłem więc TestFlight i zauważyłem, że kiedy uruchomiłem moją aplikację z TestFlight lub AppStore, ulegało awarii podczas uruchamiania. Ale jeśli uruchomię aplikację normalnie, działa bez żadnych awarii. Rzecz w tym, że błąd ten pojawił się od czasu aktualizacji na iOS 10. Teraz moja aplikacja w sklepie również zawiesza się po uruchomieniu z AppStore, gdy działała dobrze przez 2 tygodnie.Awaria aplikacji przy uruchamianiu z AppStore lub TestFlight, ale działająca bez zarzutu.

Jabłko wysłał mi dziennik awarii:

Incident Identifier: 001969F1-F275-4AC3-AFE1-E0426957B702 
CrashReporter Key: 5ad9695e945a7d5eb5d61fd18d1c3989ccd155b4 
Hardware Model:  xxx 
Process:    MyApp [400] 
Path:    /private/var/containers/Bundle/Application/644423A4-EFE7-41B1-99D9-47B46338A6E2/MyApp.app/MyApp 
Identifier:   com.MyApp.com 
Version:    20160527 (2.7.9) 
Code Type:   ARM-64 (Native) 
Role:    Foreground 
Parent Process:  launchd [1] 
Coalition:   com.MyApp.com [451] 


Date/Time:   2016-09-22 11:19:22.6893 -0700 
Launch Time:   2016-09-22 11:19:22.4164 -0700 
OS Version:   iPhone OS 10.0.1 (14A403) 
Report Version:  104 

Exception Type: EXC_BREAKPOINT (SIGTRAP) 
Exception Codes: 0x0000000000000001, 0x000000010008a864 
Termination Signal: Trace/BPT trap: 5 
Termination Reason: Namespace SIGNAL, Code 0x5 
Terminating Process: exc handler [0] 
Triggered by Thread: 0 

Filtered syslog: 
None found 

Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 MyApp       0x1000efd3c specialized AppDelegate.application(UIApplication, didFinishLaunchingWithOptions : [NSObject : AnyObject]?) -> Bool (AppDelegate.swift:218) 
1 MyApp       0x1000ed310 @objc AppDelegate.application(UIApplication, didFinishLaunchingWithOptions : [NSObject : AnyObject]?) -> Bool (AppDelegate.swift) 
2 UIKit       0x19888c42c <redacted> + 400 
3 UIKit       0x198a9cb70 <redacted> + 3524 
4 UIKit       0x198aa28e0 <redacted> + 1656 
5 UIKit       0x198ab7080 <redacted> + 48 
6 UIKit       0x198a9f8c4 <redacted> + 168 
7 FrontBoardServices    0x1945798bc <redacted> + 36 
8 FrontBoardServices    0x194579728 <redacted> + 176 
9 FrontBoardServices    0x194579ad0 <redacted> + 56 
10 CoreFoundation     0x192986278 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24 
11 CoreFoundation     0x192985bc0 __CFRunLoopDoSources0 + 524 
12 CoreFoundation     0x1929837c0 __CFRunLoopRun + 804 
13 CoreFoundation     0x1928b2048 CFRunLoopRunSpecific + 444 
14 UIKit       0x1988855dc <redacted> + 608 
15 UIKit       0x198880360 UIApplicationMain + 208 
16 MyApp       0x1000ee818 main (AppDelegate.swift:58) 
17 libdispatch.dylib    0x1918945b8 (Missing) 

Istnieje 4 inne wątki, ale ten jest jednym upaść więc nie kopiować resztę. Zrobiłem trochę badań i chociaż zauważyłem, że mój dziennik awarii nie został w pełni przetłumaczony (z jakiegoś dziwnego powodu, ponieważ mam wszystkie dsymsy, ale cokolwiek innego), udało mi się zrozumieć, że upaść na linii 217 (powiedz mi, czy ja ' Mylę). Wiem, że SIGTRAP są w większości czasu rzucane NSExceptions. Linia sama w sobie to:

let api = MyAppAPI.instance 

Instancja jest singleton. Domyślam się, że coś w tworzeniu instancji kończy się niepowodzeniem. Oto kod:

static var instance: MyAppAPI = { 
    return Singleton.instance 
}() 

class MyAppAPI: Manager { 
struct Singleton { 
    static var configuration: NSURLSessionConfiguration = { 
     var configuration = NSURLSessionConfiguration.defaultSessionConfiguration() 
     let version = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as? String ?? "" 
     configuration.HTTPAdditionalHeaders = [ 
      "Accept": "application/vnd.MyApp.api+json, application/json;q=0.9", 
      "User-Agent": "MyApp iOS/\(version)", 
      "X-API-Version": "1.0.1" 
     ] 

     return configuration 
     }() 

    static var instance = MyAppAPI(configuration: configuration) 
    static var baseURL : NSURL! = nil 
} 

Jestem tak zdesperowany w związku z tym błędem, wypróbowałem kilka rzeczy, które się nie sprawdziły. Czy patrzę w odpowiednie miejsce? Czy jest ktoś z rozwiązaniem? Wszelka pomoc byłaby bardzo doceniona. Jestem gotów ofiarować każdemu, kto może znaleźć mi rozwiązanie lub pomóc mi znaleźć rozwiązanie!

+0

Raport awarii wymaga symbolicznego znakowania. –

+0

Dodaj altert start z appdelegate do dalszych Viewcontrollers znajdziesz problem – SM18

+0

Spróbuję alternatywnego push do innych widoków, dzięki. O tym, co symbolizuję, napisałem coś na ten temat i już przetłumaczyłem połowę raportu o awarii. Czy muszę tłumaczyć wszystko, ponieważ rozbicie części jest już przetłumaczone? –

Odpowiedz

4

Znalazłem rozwiązanie mojego problemu.

Jak oczekiwano, że nadchodzi z func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool

Wewnątrz funkcji miałem let userInfo = launchOpts[UIApplicationLaunchOptionsRemoteNotificationKey] as! NSDictionary.

Zmieniłem go na let userInfo = launchOpts[UIApplicationLaunchOptionsRemoteNotificationKey] as? NSDictionary, a następnie zaznaczono if userInfo != nil, aby cały kod z numerem userInfo znalazł się w nawiasie.

Jeśli to pomoże ktoś lub jeśli ktoś zmaga się z tym problemem, należy sprawdzić wszystkie swoje ! i zamienić je na ? razie potrzeby (na didFinishLaunchingWithOptions), ponieważ uruchomienie od TestFlight/AppStore wydaje się mieć inne opcje niż od zainstalowanej aplikacji (tylko zgadnij, nie jest wystarczająco profesjonalny, aby to odebrać).

+0

Jak to się stało, skoro nie można tego debugować? Czy narzędzie do zgłaszania awarii/narzędzia do zgłaszania awarii odłożyło je na linię numer #, do której to wezwanie zostało włączone? – Marchy

+0

Zrobiłem debugowanie go poprzez AlertView, jeśli dobrze pamiętam. Wydrukowałem logi w określonych punktach, co pomogło mi w debugowaniu tego! –