iOS屏幕锁定时网络断开问题

时间:2012-08-07 09:53:36

标签: iphone ios xcode

在iOS 5中当应用程序输入时,背景wi-fi连接丢失。

但是我希望在设备休眠之前的4-5分钟内使用Wi-Fi连接,因为某些任务可以在应用程序进入后台的4-5分钟内完成。

我认为这可以通过使用beginBackgroundTaskWithExpirationHandler:来完成,但我无法解决问题

3 个答案:

答案 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

Documentation