2014-10-14 12 views
7

Jestem na moim końcu, dostaję dziwną awarię, która ma miejsce tylko po uruchomieniu aplikacji z Centrum powiadomień. Stuknięcie w powiadomienie lokalne (po stronie powiadomienia) lub wywołanie to extensionContext: openURL: completionHandler (z mojego widżetu Today) spowoduje uruchomienie aplikacji z niestandardowym schematemURL.dziwna awaria podczas uruchamiania aplikacji z Centrum powiadomień

Gdy aplikacja jest uruchomiona (ciepły rozruch), żadnych problemów, działa tak jak w reklamie. Kiedy zabiję aplikację (w przełączniku zadań), a następnie spróbuję uruchomić ją przez Centrum powiadomień (zimny rozruch), otrzymam poniższy raport o awarii.

Szukałem nisko i wysoko na wszystko, nie mogę go znaleźć. Dzieje się tak tylko na urządzeniach z iOS8, urządzenia iOS7 nie mają problemu (z uruchomionym powiadomieniem, oczywiście nie ma widżetu Today)

Czy ktoś to widział?

dziękuję!

Date/Time:   2014-10-14 18:16:39.924 -0400 
Launch Time:   2014-10-14 18:16:38.667 -0400 
OS Version:   iOS 8.0.2 (12A405) 
Report Version:  105 

Exception Type: EXC_BAD_ACCESS (SIGSEGV) 
Exception Subtype: KERN_INVALID_ADDRESS at 0x000000016a4cbeb8 
Triggered by Thread: 0 

Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 libobjc.A.dylib     0x0000000195ebbbd0 objc_msgSend + 16 
1 UIKit       0x000000018a27d840 -[UIApplication workspaceDidEndTransaction:] + 216 
2 FrontBoardServices    0x000000018da7563c __31-[FBSSerialQueue performAsync:]_block_invoke + 24 
3 CoreFoundation     0x000000018582a35c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 16 
4 CoreFoundation     0x0000000185829464 __CFRunLoopDoBlocks + 308 
5 CoreFoundation     0x0000000185827a88 __CFRunLoopRun + 1752 
6 CoreFoundation     0x0000000185755660 CFRunLoopRunSpecific + 392 
7 UIKit       0x000000018a05f4fc -[UIApplication _run] + 548 
8 UIKit       0x000000018a05a4f4 UIApplicationMain + 1484 
9 therichest      0x00000001001caa8c main (main.m:16) 
10 libdyld.dylib     0x0000000196516a04 start + 0 
+0

Czy udało Ci się naprawić ten @Mike? Widzę to samo w kilku aplikacjach na wolności, ale nie można ich replikować lokalnie, wysyłając powiadomienie push do aplikacji. – siburb

+0

Mogę replikować to konsekwentnie, wykonując powyższe czynności. Innym ciekawym faktem jest to, że tylko iOS8. Aktualizuję do wersji 8.1 i sprawdzam, czy zostanie rozwiązany. – Mike

+0

Mam nadzieję, że tak było. Nie widziałem ani jednej takiej sytuacji w naszych aplikacjach w iOS 8.1 (jeszcze), ale może być zbyt wcześnie, aby jednoznacznie powiedzieć. Mam nadzieję, że twoje testy mogą potwierdzić. – siburb

Odpowiedz

7

Twój kod lub zewnętrzna biblioteka, z której korzystasz, ręcznie przestawia pętlę. To powoduje -workspaceDidEndTransaction: nazywać się ponownie i uruchamia użycie po bezpłatnym. Jeśli ustawisz punkt przerwania na - [NSRunLoop runMode: beforeDate:] i - [NSRunLoop runUntilDate:], powinien trafić z kodem winnym znajdującym się na poprzedniej ramce stosu.

Podczas ręcznego obracania pętli uruchamiania nie jest to zalecane, jeśli można opóźnić wykonanie tej czynności do momentu zakończenia uruchamiania aplikacji (wszystkie wywołania delegatów aplikacji uruchamiania), należy unikać uderzania w tę awarię.

+0

tak, masz to. To było trudne. dzięki! – Mike

+0

@Mike Jak to rozwiązałeś? czy to była trzecia partia lib? –

+0

co wspomniano o @Dex. Używałem biblioteki stron trzecich, która ręcznie przestawiała pętlę uruchamiania. Wyłączenie tej biblioteki naprawiło mój problem. Od tego czasu również powiadomiłem programistę biblioteki. – Mike

Powiązane problemy