And*_*rei 11 objective-c ios uilocalnotification nsurlsession nsurlsessiondownloadtask
我正在使用NSURLSessionDownloadTask对象NSURLSession允许用户在应用程序处于后台/设备锁定状态时下载文档.我还想告知用户个人下载已通过本地通知完成.
为此,我在-URLSession:downloadTask:didFinishDownloadingToURL:下载任务委托方法中触发本地通知,但是我想知道是否有更好的地方添加触发通知的代码,因为Apple解释它的方式,下载任务将传递给系统,从中我得出的是,一旦(或不久之后)应用程序背景化,下载任务的代理将不会再调用这些代理.
我的问题:添加触发本地通知的代码的最佳位置是什么?有没有人在他们的应用程序中添加这种功能有任何经验?
关于您的问题的答案可以在Apple文档URL中找到.加载系统编程指南:
在iOS中,当后台传输完成或需要凭据时,如果您的应用不再运行,iOS会自动在后台重新启动您的应用并
application:handleEventsForBackgroundURLSession:completionHandler:在您应用的UIApplicationDelegate对象上调用该 方法.此调用提供导致您的应用启动的会话标识符.您的应用应存储该完成处理程序,创建具有相同标识符的后台配置对象,并使用该配置对象创建会话.新会话将自动与正在进行的后台活动重新关联.稍后,当会话完成最后一次后台下载任务时,它会向会话委托发送一条URLSessionDidFinishEventsForBackgroundURLSession:消息.然后,您的会话委托应该调用存储的完成处理程序.如果在暂停应用程序时完成任何任务,
URLSession:downloadTask:didFinishDownloadingToURL:则会使用任务和与之关联的新下载文件的URL调用委托的 方法.
如你所见,它只是设置delegate对象要复杂得多.通过委托方法,只有app处于前台模式时才会通知您.在其他情况下(应用程序处于后台模式,应用程序终止),您需要AppDelegate上面引用中描述的句柄方法.
此外,Apple还提供了示例项目,该项目显示了如何使用后台下载/上传任务.此示例将帮助您找到放置"本地通知"代码的位置.