【发布时间】:2014-09-25 13:17:11
【问题描述】:
我一直在尝试使用NSURLSession的后台上传,但偶尔会出现这个崩溃
Sep 25 10:01:48 ipad backboardd[29] <Warning>: MyApp[11829] has active assertions beyond permitted time:
{(
<BKProcessAssertion: 0x166b1770> identifier: com.apple.nsnetworkd.handlesession process: MyApp[11829] permittedBackgroundDuration: 30.000000 reason: backgroundDownload owner pid:8440 preventSuspend preventThrottleDownUI preventIdleSleep preventSuspendOnSleep
)}
调试代码,我发现当崩溃发生时,application: handleEventsForBackgroundURLSession:completionHandler: 方法被调用,在那里我重新创建会话并存储完成处理程序,如Apple Documentation reccomends,但任务端的委托从未被调用,URLSessionDidFinishEventsForBackgroundURLSession: 也不是,这解释了崩溃,因为我在 NSURLSession 委托中处理完上传结束后调用了完成处理程序。
谁能告诉我为什么不召集代表?
【问题讨论】:
-
我发现很难获得有关后台任务正在做什么的良好信息。您是否查看了设备控制台日志以获取线索?有时会出现错误消息。
-
是的,我从设备控制台收到了这条消息,xCode debug 防止了这种崩溃的发生,所以我发现调试它的唯一方法是使用 NSLog 和设备控制台
标签: ios background nsurlsession nsurlsessionuploadtask