1

我知道在iOS 4上,Wi-Fi 连接曾经是持久的,所以进入睡眠模式/锁定保持连接 ON 。

这在下一个版本的iOS 5中进行了修改,以提高电池寿命。

iOS 5中,需要将设备插入电源才能获得持久的 Wi-Fi 连接。

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

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

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

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

即使 iPad 进入睡眠模式/锁定在iOS5中,我也想保持/保持 WiFi 连接处于活动状态。那么是否有任何替代方案可以实现这一目标。

谢谢。

4

3 回答 3

1

呼...终于我得到了一个解决方案idleTimerDisabled

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

它是防止 iPad 在我的应用程序运行时休眠的方法。

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

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

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

例子:[[UIApplication sharedApplication] setIdleTimerDisabled:YES];

注意:当您的应用不需要防止屏幕锁定时,请务必将此属性重置为 NO。

您可以 在此处查看更多详细信息

于 2012-12-12T13:54:17.880 回答
0

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

于 2012-08-01T15:29:12.670 回答
0

我刚看到这个问题,考虑到日期,我不知道这是否仍然有帮助,但是您是否尝试过使用UIApplication's 的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:”的文档以获取详细信息。

希望这可以帮助!:)

于 2012-12-03T22:08:21.777 回答