/ / Awaria aplikacji z powodu aktywnych asercji poza dozwolonym czasem - Object-C, iOS, Cocoa-Touch, nsurlconnection, core-location

Awaria aplikacji z powodu aktywnych twierdzeń wykraczających poza dozwolony czas - obiektyw-c, ios, cocoa-touch, nsurlconnection, core-location

Szczegóły raportu o awarii:

Exception Type:  00000020
Exception Codes: 0x8badf00d
Highlighted Thread:  3

Application Specific Information:
MyApp[123] has active assertions beyond permitted time:
{(
<SBProcessAssertion: 0x4b52f0> identifier: CoreLocationBackgroundClient process: MyApp[579] permittedBackgroundDuration: 600.000000 reason: finishTask owner pid:123 preventSuspend  preventIdleSleep
)}

Elapsed total CPU time (seconds): 13.980 (user 13.980, system 0.000), 1% CPU
Elapsed application CPU time (seconds): 0.251, 0% CPU

a wątek 3 to:

Thread 3 name:  com.apple.NSURLConnectionLoader
Thread 3:
0   libsystem_kernel.dylib          0x30e67004 mach_msg_trap + 20
1   libsystem_kernel.dylib          0x30e671fa mach_msg + 50
2   CoreFoundation                  0x381ea3ec __CFRunLoopServiceMachPort + 120
3   CoreFoundation                  0x381e9124 __CFRunLoopRun + 876
4   CoreFoundation                  0x3816c49e CFRunLoopRunSpecific + 294
5   CoreFoundation                  0x3816c366 CFRunLoopRunInMode + 98
6   Foundation                      0x373a7bb2 +[NSURLConnection(Loader) _resourceLoadLoop:] + 302
7   Foundation                      0x373a7a7a -[NSThread main] + 66
8   Foundation                      0x3743b58a __NSThread__main__ + 1042
9   libsystem_c.dylib               0x333c972e _pthread_start + 314
10  libsystem_c.dylib               0x333c95e8 thread_start + 0

Aplikacja korzysta z GPS. Masz jakiś pomysł, dlaczego ta katastrofa się dzieje?

Odpowiedzi:

1 dla odpowiedzi № 1

Wygląda na to, że używasz złego rodzajuprzetwarzanie w tle. 600 sekund to nagroda. Sugeruje to, że „używasz interfejsu API do wykonywania zadań, który daje aplikacjom określony czas (obecnie dziesięć minut) na dokończenie określonych czynności przed ich zawieszeniem.

Jeśli chcesz nadal monitorować lokalizację GPS w tle, musisz użyć określonych interfejsów API Core Location (i ustawić odpowiednią flagę w swoim Info.plist).