新しい ios7 バックグラウンド転送 API を使用して、写真をサーバーにアップロードしようとしていました。1) バイトを s3 にアップロードする 2) サービス API を呼び出してアップロードを「完了する」
このドキュメントを見たところ、バックグラウンドの NSURLSession が「データ」タスクをサポートしていないようです。実際のアップロードが完了した後、ステップ 2 をバックグラウンドで実行できないということですか?
新しい ios7 バックグラウンド転送 API を使用して、写真をサーバーにアップロードしようとしていました。1) バイトを s3 にアップロードする 2) サービス API を呼び出してアップロードを「完了する」
このドキュメントを見たところ、バックグラウンドの NSURLSession が「データ」タスクをサポートしていないようです。実際のアップロードが完了した後、ステップ 2 をバックグラウンドで実行できないということですか?
NSURLSessions
URLSessionDidFinishEventsForBackgroundURLSession
セッションがすべてのタスクを完了した後に呼び出されるデリゲート メソッドがあります。そこにAPI呼び出しを実行する必要があると思います。
- (void)applicationDidEnterBackground:(UIApplication *)application
{
if([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)])
{
NSLog(@"Multitasking Supported");
__block UIBackgroundTaskIdentifier background_task;
background_task = [application beginBackgroundTaskWithExpirationHandler:^ {
//Clean up code. Tell the system that we are done.
[application endBackgroundTask: background_task];
background_task = UIBackgroundTaskInvalid;
}];
//To make the code block asynchronous
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//### background task starts
NSLog(@"Running in the background\n");
while(TRUE)
{
NSLog(@"Background time Remaining: %f",[[UIApplication sharedApplication] backgroundTimeRemaining]);
[NSThread sleepForTimeInterval:1]; //wait for 1 sec
}
//#### background task ends
//Clean up code. Tell the system that we are done.
[application endBackgroundTask: background_task];
background_task = UIBackgroundTaskInvalid;
});
}
else
{
NSLog(@"Multitasking Not Supported");
}
}
このコードを appdelegate.m ファイルに入れます
このコードを試してみてください。