2015-12-21 109 views
1

我正在iOS 9.0.2設備上測試我的應用程序。我有服務從設備上傳數據。當上傳在前臺時,它工作正常。 但是,當上傳在後臺運行並且設備被自動鎖定(引腳安全)時,它會停止並崩潰。NSURLConnection應用程序在設備鎖定時發生崩潰

Exception Type: EXC_BAD_ACCESS (SIGBUS) 
Exception Subtype: unknown at 0x0000000105eaa000 
Triggered by Thread: 7 

Filtered syslog: 
None found 

Thread 7 name: Dispatch queue: com.apple.NSURLSession-work 
Thread 7 Crashed: 
0 CoreFoundation     0x0000000184f51730 0x184e64000 + 972592 
1 CoreFoundation     0x0000000184f50e44 0x184e64000 + 970308 
2 CoreFoundation     0x0000000184e68000 0x184e64000 + 16384 
3 CFNetwork      0x000000018481c09c 0x18465c000 + 1835164 
4 CFNetwork      0x00000001846d997c 0x18465c000 + 514428 
5 CFNetwork      0x00000001847e1814 0x18465c000 + 1595412 
6 CFNetwork      0x0000000184783144 0x18465c000 + 1208644 
7 CFNetwork      0x0000000184777548 0x18465c000 + 1160520 
8 CFNetwork      0x000000018477ec9c 0x18465c000 + 1191068 
9 CFNetwork      0x0000000184776528 0x18465c000 + 1156392 
10 libdispatch.dylib    0x000000019a3797b0 0x19a378000 + 6064 
11 libdispatch.dylib    0x000000019a379770 0x19a378000 + 6000 
12 libdispatch.dylib    0x000000019a38575c 0x19a378000 + 55132 
13 libdispatch.dylib    0x000000019a37d274 0x19a378000 + 21108 
14 libdispatch.dylib    0x000000019a38762c 0x19a378000 + 63020 
15 libdispatch.dylib    0x000000019a38734c 0x19a378000 + 62284 
16 libsystem_pthread.dylib   0x000000019a58d478 0x19a58c000 + 5240 
17 libsystem_pthread.dylib   0x000000019a58d028 0x19a58c000 + 4136 

當我進行調試時,它會指向調試器中與NSURLConnection調用關聯的內存位置。

僅當設備開啓密碼時纔會觀察到問題。如果它被關閉並且用戶鎖定了電話,它將上傳文件而不會出現任何錯誤。

幫助讚賞。

+0

無鎖定地測試 –

+0

也許您的NSURLConnection無法訪問您想要上傳的資源。 –

+0

沒有鎖定手機,它工作正常,沒有中斷。 iOS 9引入了用於訪問多媒體資源的限制嗎? – Raghav

回答

0

NSURLConnection不能在後臺工作,直到您將其設置爲在後臺線程上工作。即使在後臺運行後,您也會獲得最多3分鐘的時間來完成您的任務,否則OS會暫停此過程。

+0

是的,這個實現已經在我的代碼中。 3分鐘後,它會暫停,並且一旦到達前景就會恢復。 – Raghav

0

我和我的iPhone應用程序有類似的問題。我會啓動一個後臺線程從我的Web服務下載一些數據,但是如果設備進入空閒模式,它將會終止網絡連接。

當然,解決方案是設置idleTimerDisabled以防止設備進入睡眠狀態,同時它正忙於同步數據。

但即便如此,它的工作實在太差了,即使是在iOS的8

我討厭的小的解決方案是建立一個計時器,以反覆防止設備進入休眠狀態:

iPhone - phone goes to sleep even if idleTimerDisabled is YES

所以,回到你的問題,我需要在前臺線程中運行我的下載功能,並特別是防止設備進入睡眠。

希望這會有所幫助。

+0

我試過這個仍然是相同的問題,只有當密碼開啓時纔會觀察到問題。 – Raghav

相關問題