Iphone 即使iPad进入睡眠模式/锁定在iOS 5中,保持WiFi连接处于活动状态
我知道在iOS 4上,Wi-Fi连接过去是持久的,因此进入睡眠模式/锁定会保持连接 在下一版本的iOS 5中对此进行了修改,以延长电池寿命 在iOS 5中,需要将设备插入电源才能保持Wi-Fi连接 iPad进入睡眠模式/锁定后,Wi-Fi连接将自动断开 我的问题来了,我正在通过WiFi发送大量数据,这可能需要太多时间。因此,用户必须等待事务完成 iPad可能会切换到睡眠模式/锁定,而发送过程需要更多时间,这将导致WiFi连接错误 现在我已经在info.plist中将UIRequiresPersistentWiFi设置为YES。然而,同样的网络问题再次发生 我希望保持/保持WiFi连接处于活动状态,即使iPad进入睡眠模式/锁定在iOS5中。那么,有没有其他办法来实现这一点呢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处理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]代码>
注意:当应用程序不需要防止屏幕锁定时,请确保将此属性重置为“否”。
您可以查看更多详细信息