2015-01-14 63 views
0

我正在使用NSURLSession上传多个视频文件。NSURLSession后台任务:何时调用handleEventsForBackgroundURLSession:completionHandler?

application:handleEventsForBackgroundURLSession:completionHandler:方法被调用几次,似乎在每个任务完成后。我存储了传递给此方法的completionHandler,以便稍后可以调用它。

我的问题是:每次调用上面的应用程序委托方法时,是否调用它?或者我只在我的后台会话的[tasks count] == 0时才调用它?当我做了后者的应用程序崩溃的背景与控制台此信息:

Application Specific Information: 
<BKNewProcess: 0x134d48400; com.vimeo; pid: 2141; hostpid: -1> has active assertions beyond permitted time: 
{(
    <BKProcessAssertion: 0x134d49500> id: 1679-3230372B-D4E5-44A1-A8DD-221CA8E6EECE name: com.apple.nsurlsessiond.handlesession com.vimeo.app.BackgroundSessionIdentifier process: <BKNewProcess: 0x134d48400; com.vimeo; pid: 2141; hostpid: -1> permittedBackgroundDuration: 30.000000 reason: backgroundDownload owner pid:1679 preventSuspend preventThrottleDownUI preventIdleSleep preventSuspendOnSleep 
)} 

我已经阅读背景会议及其复杂许多的StackOverflow和博客,我看到关于上述问题的相互矛盾的信息。

在此先感谢您的帮助。

+0

后一个想法听起来不错,但你应该处理并发的柜台上,可能与GCD或通知... –

回答

0

URLSessionDidFinishEventsForBackgroundURLSession的文档声称在那里调用它。我一直这样做,只是因为他们说,我没有看到任何相关的问题。