运行 后台模式下的网络连接
Run network connection in background mode
即使应用程序处于后台模式(最小化应用程序),我也有发送和接收数据的代码:
MyViewController.m
-(void)viewDidAppear:(BOOL)animated{
[self doUpdateEvenAppMinimized];
}
- (void) doUpdate{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self beginBackgroundUpdateTask];
[self sendFilesToServer];//Inside this method have a sleep that call every 5 minutes
//The code used in sendFilesToServer is the same in this website https://dcraziee.wordpress.com/2013/05/29/how-to-upload-file-on-server-in-objective-c/
//[self endBackgroundUpdateTask];//This method is forever...so I not need to call this line
});
}
- (void)beginBackgroundUpdateTask{
self.backgroundUpdateTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[self endBackgroundUpdateTask];
}];
}
- (void) endBackgroundUpdateTask{
[[UIApplication sharedApplication] endBackgroundTask: self.backgroundUpdateTask];
self.backgroundUpdateTask = UIBackgroundTaskInvalid;
}
文档说最长时间是 10 分钟,要删除它,我使用 实施长-运行 任务 的概念,为此我 select 我的项目 > 功能 > 后台模式(打开)> 外部附件通信(选中)。
通过这些步骤,我的申请将免除 10 分钟?
试图在后台规避 运行 的规则听起来是错误的做法。考虑将 NSURLSession
用于与应用的生命周期无关的长时间 运行ning 网络操作。
即使应用程序处于后台模式(最小化应用程序),我也有发送和接收数据的代码:
MyViewController.m
-(void)viewDidAppear:(BOOL)animated{
[self doUpdateEvenAppMinimized];
}
- (void) doUpdate{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self beginBackgroundUpdateTask];
[self sendFilesToServer];//Inside this method have a sleep that call every 5 minutes
//The code used in sendFilesToServer is the same in this website https://dcraziee.wordpress.com/2013/05/29/how-to-upload-file-on-server-in-objective-c/
//[self endBackgroundUpdateTask];//This method is forever...so I not need to call this line
});
}
- (void)beginBackgroundUpdateTask{
self.backgroundUpdateTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[self endBackgroundUpdateTask];
}];
}
- (void) endBackgroundUpdateTask{
[[UIApplication sharedApplication] endBackgroundTask: self.backgroundUpdateTask];
self.backgroundUpdateTask = UIBackgroundTaskInvalid;
}
文档说最长时间是 10 分钟,要删除它,我使用 实施长-运行 任务 的概念,为此我 select 我的项目 > 功能 > 后台模式(打开)> 外部附件通信(选中)。
通过这些步骤,我的申请将免除 10 分钟?
试图在后台规避 运行 的规则听起来是错误的做法。考虑将 NSURLSession
用于与应用的生命周期无关的长时间 运行ning 网络操作。