在iOS 5中当应用程序输入时,背景wi-fi连接丢失。
但是我希望在设备休眠之前的4-5分钟内使用Wi-Fi连接,因为某些任务可以在应用程序进入后台的4-5分钟内完成。
我认为这可以通过使用beginBackgroundTaskWithExpirationHandler:
来完成,但我无法解决问题
答案 0 :(得分:0)
只是禁用iPhone进入睡眠模式
-(void) sleepModeDisable{
[[UIApplication sharedApplication] setIdleTimerDisabled:NO];
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
}
每隔10秒调用一次这个函数,这可能对你有帮助
答案 1 :(得分:0)
我处理此问题的方法是对我发送的每个网络请求使用beginBackgroundTaskWithExpirationHandler
通过这种方式,即使我的应用程序移至后台,我也确保完成所有网络连接。
我通常使用一个单例对象来处理所有网络请求,所以在发送请求之前我打电话
- (void)startBackgroundTask
{
// ask for extra time if this is called when app go to suspended
UIApplication *application = [UIApplication sharedApplication];
_bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
// Clean up any unfinished task business by marking where you.
// stopped or ending the task outright.
[application endBackgroundTask:_bgTask];
_bgTask = UIBackgroundTaskInvalid;
}];
}
在我收到回复(成功/失败)或我取消请求后,我致电
- (void)stopBackgroudTask
{
UIApplication *app = [UIApplication sharedApplication];
if (_bgTask != UIBackgroundTaskInvalid) {
[app endBackgroundTask:_bgTask];
_bgTask = UIBackgroundTaskInvalid;
}
}
*不要忘记定义UIBackgroundTaskIdentifier *_bgTask;
此外,如果您计划大量使用Wi-Fi,则应将plist文件中的Application uses Wi-Fi
键设置为YES,否则即使您的应用在30分钟后关闭也会关闭Wi-Fi正在运行。
答案 2 :(得分:0)
这里没有火箭科学,这是iOS中的预期行为,以节省电池Wi-Fi在手机锁定时关闭除非你告诉iOS你的应用程序需要持久的Wi-Fi,然后它不会为你关闭它你的应用正在运行。
为此,只需将UIRequiresPersistentWiFi
添加到您的info.plist并将其标记为YES