2014-06-12 86 views
1

我有iOS應用程序,主要功能是上傳圖片。 我的問題是,有什麼情況下應用程序可以繼續上傳圖片和應用程序被解僱時與服務器通信?如何繼續在iOS應用程序的後臺上傳?

感謝

+0

短語「駁回」的意思是_terminated_或去_background_? – holex

+0

@holex去背景。 – user3374800

+0

@ user3374800:我的答案有什麼好運? – rdurand

回答

2

如果使用NSURLConnection,你可以使用一個UIBackgroundTaskIdentifier,以保持您的連接活着即使該應用程序發送到後臺:

聲明你的後臺任務標識符,這樣你就可以在任何地方訪問它的類實現,例如在您.m文件的頂部:

@implementation MyClass { 

    UIBackgroundTaskIdentifier backgroundTaskID; 
} 

創建連接:

NSURLRequest *request = [NSURLRequest requestWithURL: aURL]; 

NSURLConnection *uploadConnection = [NSURLConnection connectionWithRequest:request delegate:self]; 

backgroundTaskID = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ 

    // Cancel the connection in case of expiration 
    [uploadConnection cancel]; 
}]; 

結束你的後臺任務在這兩種方法NSURLConnectionDelegate連接結束後/失敗:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { 

    // Handle a fail 

    [[UIApplication sharedApplication] endBackgroundTask:backgroundTaskID]; 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 

    // Handle a success 

    [[UIApplication sharedApplication] endBackgroundTask:backgroundTaskID]; 
} 
+0

我們是否需要爲此設置任何UIBackgroundModes? –

+0

不是100%可靠的答案,但我很肯定你不需要。 – rdurand

+0

我也這麼認爲,但我只是爲一個客戶做了這個,他說如果他去背景上傳仍然失敗..反正TNN –

相關問題