Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 即使iPad进入睡眠模式/锁定在iOS 5中,保持WiFi连接处于活动状态_Iphone_Objective C_Ios5_Connection_Wifi - Fatal编程技术网

Iphone 即使iPad进入睡眠模式/锁定在iOS 5中,保持WiFi连接处于活动状态

Iphone 即使iPad进入睡眠模式/锁定在iOS 5中,保持WiFi连接处于活动状态,iphone,objective-c,ios5,connection,wifi,Iphone,Objective C,Ios5,Connection,Wifi,我知道在iOS 4上,Wi-Fi连接过去是持久的,因此进入睡眠模式/锁定会保持连接 在下一版本的iOS 5中对此进行了修改,以延长电池寿命 在iOS 5中,需要将设备插入电源才能保持Wi-Fi连接 iPad进入睡眠模式/锁定后,Wi-Fi连接将自动断开 我的问题来了,我正在通过WiFi发送大量数据,这可能需要太多时间。因此,用户必须等待事务完成 iPad可能会切换到睡眠模式/锁定,而发送过程需要更多时间,这将导致WiFi连接错误 现在我已经在info.plist中将UIRequiresPersi

我知道在iOS 4上,Wi-Fi连接过去是持久的,因此进入睡眠模式/锁定会保持连接

在下一版本的iOS 5中对此进行了修改,以延长电池寿命

在iOS 5中,需要将设备插入电源才能保持Wi-Fi连接

iPad进入睡眠模式/锁定后,Wi-Fi连接将自动断开

我的问题来了,我正在通过WiFi发送大量数据,这可能需要太多时间。因此,用户必须等待事务完成

iPad可能会切换到睡眠模式/锁定,而发送过程需要更多时间,这将导致WiFi连接错误

现在我已经在info.plist中将UIRequiresPersistentWiFi设置为YES。然而,同样的网络问题再次发生

我希望保持/保持WiFi连接处于活动状态,即使iPad进入睡眠模式/锁定在iOS5中。那么,有没有其他办法来实现这一点呢


谢谢。

这是因为iOS处理Wi-Fi连接的方式。现在的情况是iPad进入了睡眠模式(这是在5分钟不活动后发生的)。此模式旨在提高电池寿命。在iOS 4上,Wi-Fi连接过去是持久的,因此进入睡眠模式会保持连接打开(或切换到蜂窝数据)。这在下一个版本iOS 5中进行了修改,要求设备插入电源才能保持Wi-Fi连接。

这是因为iOS处理Wi-Fi连接的方式。现在的情况是iPad进入了睡眠模式(这是在5分钟不活动后发生的)。此模式旨在提高电池寿命。在iOS 4上,Wi-Fi连接过去是持久的,因此进入睡眠模式会保持连接打开(或切换到蜂窝数据)。这在下一版本iOS 5中进行了修改,要求设备插入电源才能保持Wi-Fi连接。

我刚刚看到这个问题,考虑到日期,我不知道这是否仍然有用,但是您是否尝试过使用
UIApplication
beginBackgroundTaskWithExpirationHandler:
方法

您可以按照以下方式进行操作:

//#1 - Start a chunk of work as able to run in the "background"
UIApplication *app = [UIApplication sharedApplication];

bgTask_ = [app beginBackgroundTaskWithExpirationHandler:^{
    if (bgTask_ != UIBackgroundTaskInvalid) {

        //cancel the connection/load/chunk of work/operation
        [self cancelLoad];

        [[UIApplication sharedApplication] endBackgroundTask:bgTask_];
        bgTask_ = UIBackgroundTaskInvalid;
    }
}];

//#2 - Do work...

//#3 - Once work is finished, Explicity finish the background task
UIApplication *app = [UIApplication sharedApplication];

if (bgTask_ != UIBackgroundTaskInvalid) {
    [app endBackgroundTask:bgTask_];
    bgTask_ = UIBackgroundTaskInvalid;
}
您也可以在另一个方法中调用#3,因为您可能正在执行异步操作(在后台运行并异步调用消息)。您还可以查看关于“beginBackgroundTaskWithExpirationHandler:”的文档以了解详细信息


希望这有帮助!:)

我刚刚看到这个问题,考虑到日期,我不知道这是否仍然有用,但您是否尝试过使用
UIApplication
beginBackgroundTaskWithExpirationHandler:
方法

您可以按照以下方式进行操作:

//#1 - Start a chunk of work as able to run in the "background"
UIApplication *app = [UIApplication sharedApplication];

bgTask_ = [app beginBackgroundTaskWithExpirationHandler:^{
    if (bgTask_ != UIBackgroundTaskInvalid) {

        //cancel the connection/load/chunk of work/operation
        [self cancelLoad];

        [[UIApplication sharedApplication] endBackgroundTask:bgTask_];
        bgTask_ = UIBackgroundTaskInvalid;
    }
}];

//#2 - Do work...

//#3 - Once work is finished, Explicity finish the background task
UIApplication *app = [UIApplication sharedApplication];

if (bgTask_ != UIBackgroundTaskInvalid) {
    [app endBackgroundTask:bgTask_];
    bgTask_ = UIBackgroundTaskInvalid;
}
您也可以在另一个方法中调用#3,因为您可能正在执行异步操作(在后台运行并异步调用消息)。您还可以查看关于“beginBackgroundTaskWithExpirationHandler:”的文档以了解详细信息


希望这有帮助!:)

啊。。。最后,我得到了一个使用idleTimerDisabled的解决方案

它是一个布尔值,用于控制是否为应用程序禁用空闲计时器

这是在我的应用程序运行时防止iPad睡眠的方法

此属性的默认值为
。当大多数应用程序在短时间内没有触摸作为用户输入时,系统会将设备置于“睡眠”状态,屏幕变暗

这样做是为了节省电源。但是,例如,除了加速计游戏之外,没有用户输入的应用程序可以通过将此属性设置为“是”来禁用“
”,以避免系统睡眠

我只是在通过WiFi发送大量数据时将值设置为
YES
,并在过程完成时将值设置为
NO

示例:
[[UIApplication sharedApplication]setIdleTimeDisabled:是];

注意:当应用程序不需要防止屏幕锁定时,请确保将此属性重置为“否”。


您可以查看更多详细信息

呸……最后,我找到了一个使用
idleTimerDisabled
的解决方案

它是一个布尔值,用于控制是否为应用程序禁用空闲计时器

这是在我的应用程序运行时防止iPad睡眠的方法

此属性的默认值为
。当大多数应用程序在短时间内没有触摸作为用户输入时,系统会将设备置于屏幕变暗的“
睡眠
”状态

这样做是为了节约能源。但是,例如,除加速计游戏外,没有用户输入的应用程序可以通过将此属性设置为“是”,禁用“
空闲计时器”
,以避免系统睡眠

我只是在通过WiFi发送大量数据时将值设置为
YES
,并在过程完成时将值设置为
NO

示例:
[[UIApplication sharedApplication]SetIdleTimeDisabled:YES]

注意:当应用程序不需要防止屏幕锁定时,请确保将此属性重置为“否”。

您可以查看更多详细信息