我已经创建了一个示例代码来反复下载网络文件(每隔30秒左右)。在iOS 7中使用NSURLSession的后台传输服务
我跟着本教程http://mobile.tutsplus.com/tutorials/iphone/ios-7-sdk-background-transfer-service/ 并添加了一个像这样的计时器来重复它。iOS 7后台传输服务在3分钟后停止
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil];
mute = [NSTimer scheduledTimerWithTimeInterval:30.0f
target:self
selector:@selector(startDownload)
userInfo:nil
repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:mute forMode:NSRunLoopCommonModes];
当我(通过点击主页按钮背景)在模拟器和iPad上连接到的Xcode(在那里我可以看到日志)运行一切正常,并保持不断下载。 但是当我从iPad断开iPad并在大约3秒后在后台在iPad上运行它时,它停止运行(AppDelegate中的handleEventsForBackgroundURLSession被调用)。
在Xcode项目功能中,我选择了背景获取作为背景模式。
我在这里错过了什么,或者我做了什么错误,以便它在3分钟后停止? (根据它应该持续运行,因为在后台为这个没有时间限制的iOS 7后台传输服务本细则。)
感谢
感谢您的回复尼廷。但仍然是相同的结果。从Mac断开连接后,您的应用程序是否在iPad上运行?在Xcode调试模式和模拟器中运行时,它可以工作。但问题是在iPad上将其作为实际应用运行时。 – Madhu
这是我用在我的应用程序,工作正常.. –
谢谢尼廷我得到它的工作与您的文章的帮助和这个http://stackoverflow.com/questions/10319643/objective-c-proper-use-of -beginbackgroundtaskwithexpirationhandler。但现在我的问题是iOS论坛上的一些专家说,使用像这样的计时器在后台运行并不是一件好事。他建议在上次下载完成时调用starDownload,而不使用计时器。打算这样做。 – Madhu