2010-09-13 113 views
3

我无法在iphone应用程序中保持wifi连接30分钟后断开连接,但需要在用户锁定时运行。让iphone/iphone保持锁定状态iphone

该应用通常不会休眠,但如果用户如此选择,他们可能会锁定显示器。我正在为应用程序添加一项新功能,以1秒的间隔通过网络发送数据。在此之前,该应用没有网络需求,并且在用户锁定的情况下,它已按需要运行(音乐,基于计时器的流程)。

答案似乎是在这里:
Wifi connection doesn't stay alive when asleep, with iOS4

但添加UIRequiresPersistentWifi布尔值Info.plist的超时溢出的WiFi(我测试的触摸,iOS4.02)30后不保留它即使在应用程序忙于通过连接发送数据时也是如此。也许这只适用于显示器自己睡,而不是用户锁?

相关,我认为没有办法在任何时间间隔“搅动”显示器?用户按回家按钮足以带回WiFi;解锁是没有必要的。

此外,我已经阅读过WWDC发布的网站上的UIRequiresPersistentWifi适用于保持活力的3G。任何人都能验证?

感谢

+1

原来,尽管文档声明UIRequiresPersistentWiFi将使应用程序的连接保持活动,但根据Apple开发论坛的说法,屏幕锁定时不可能。布莱什。 – ransomweaver 2010-09-14 01:25:38

+0

我的解决方案是,由于所需的功能是iPhone独有的功能,因此可以实现一个开关,以允许接近传感器使显示屏变暗。如果设备在应用程序运行时长时间放置,这可以节省果汁。 – ransomweaver 2010-09-15 19:57:54

回答

1

你的应用程序可能会得到由OS用户活动的足够长的时间后暂停。

在iOS 4.x中,某些类型的应用程序在显示器被锁定时未挂起(音乐播放器,VOIP等)。注册为VOIP类型应用程序的应用程序可能被允许保留持久性网络长时间连接。然而,苹果可能会要求应用程序实际提供一些VOIP功能,以便在提交审查的任何应用程序中注册该类型。

+0

将一个名为UIBackgroundModes的数组添加到info.plist中,使用“voip”成员不会使wifi继续运行。不过,我认为它不应该有。为了澄清,当30分钟超时发生时,我的应用程序不在后台。它是活动的应用程序,显示器由用户锁定。 – ransomweaver 2010-09-13 17:30:01

+0

此外,该应用程序锁定时正常工作,除了消失的网络。它还使用核心数据存储数据,并正确记录WiFi睡眠后的时间段内的数据。该应用的音频方面正确执行。 – ransomweaver 2010-09-13 17:32:54

0

是否有一些活动需要您执行网络活动?从iOS5开始,我们注意到即使我们发送网络数据包(心跳定时器),iOS 5也会在锁定设备后将其封锁。

需要注意的是,需要VoIP的服务会继续接听电话,并且当您的手机处于睡眠模式或锁定状态时,会发出通知。这意味着WiFi并未完全关闭。我不知道这是怎么发生的。

作为一种替代方案,您可以使用您的网络提供商的数据载体作为WiFi的替代方案,以防WiFi出现故障。使用UIRequiresPersistentWiFi,您只需通知iOS5您需要使用WiFi来运行您的应用程序,而其他任何内容都不表示您的屏幕是否处于开启或关闭状态。为了让您的手机免受自动锁定,您可以使用disableTimer = YES标志来代替电池充电。

+0

您说:“需要注意的是,需要VoIP的服务可以继续接听电话。” 我不同意这种说法。我测试了当前的Skype应用程序,情况并非如此:当我锁定屏幕时未收到呼叫。我可以问你,你尝试过哪种voip应用程序? – Albrecht 2012-01-10 16:58:50

+0

对于迟到的回复,我只试过Skype。被称为在锁定的iPad上运行的Skype(下载新安装程序),并显示铃声电话。 – VijayKumar 2012-01-29 11:17:49