我的应用程序需要Internet连接。似乎如果我让我的iPhone闲置一段时间它会关闭其3G连接。一旦我将其唤醒(滑动解锁)并运行我的应用程序,它就无法连接到Internet。我必须首先运行Youtube或Safari,然后它获得Internet连接,然后我必须关闭Youtube / Safari然后我可以使用我的应用程序登录我的服务。
请您告诉我如何从我的应用程序激活3G连接(以便我可以在从空闲状态唤醒后直接使用我的应用程序,而且我不必运行其他应用程序,如Youtube / Safari?< / p>
感谢。
答案 0 :(得分:2)
显然有另一个更好的解决方案,但您可以加载一个空白页面:
[NSString stringWithContentsOfUrl ... ]
如果有必要,将建立连接。
答案 1 :(得分:2)
要禁用空闲计时器,请查看UIApplication类的idleTimerDisabled property。
来自Apple:
此属性的默认值为 没有。当大多数应用程序没有 触摸作为用户输入的简短 期间,系统放置设备 进入“睡眠”状态的屏幕 变暗。这是为了达到目的 节约能源。然而, 没有用户的应用程序 输入除了 加速度计游戏,例如,可以, 通过将此属性设置为YES, 禁用“空闲计时器”以避免 系统睡眠。
重要提示:您应该设置此项 财产只在必要时才应该 一定要把它重置为NO 不再存在。最 应用程序应该让系统 闲置时关闭屏幕 计时器过去了。这包括音频 应用。适当使用 音频会话服务,播放和 录音时不间断地进行 屏幕关闭。唯一的 应该禁用的应用程序 idle timer是映射应用程序, 游戏或类似程序 零星的用户互动。
答案 2 :(得分:1)
只有NSURLConnection
(以及在其上分层的任何API)在从睡眠状态唤醒后重新初始化数据连接。要重新初始化数据连接,请为非本地地址创建一个虚拟NSURLConnection
并立即取消它;然后socket
API将按预期工作。
开发者论坛上有一篇帖子,苹果开发者详细解释了这一点(但目前我找不到)
答案 3 :(得分:0)
您确定正确建立连接吗?我的应用程序使用套接字执行相同操作,并且在设备休眠后重新建立连接没有问题。在SystemConfiguration框架中使用Reachability API可在覆盖可用时获得通知,然后再尝试连接。请注意,设备唤醒以获得Internet连接后,必须经过一段时间 - 从几秒到几分钟 - 所以要耐心等待。
Apple提供了Reachability示例,还搜索了stackoverflow的可访问性,您将找到更多提示如何实现它。
答案 4 :(得分:0)
实际上,在启动应用程序之间更改手机上的网络设置时会出现同样的问题。例如,假设您在启动应用程序时使用WIFI连接。然后关闭应用程序并关闭WIFI,以便设备使用运营商的网络。当您重新启动应用程序时,套接字将无法连接,除非您使用虚拟NSURLConnection(或在启动应用程序之前启动浏览器)进行操作。
此外,在初始化之后立即取消NSURLConnection(使用connectionWithRequest或initWithRequest)对我来说不起作用。要么取消请求,要么在取消请求之前等待一段时间(例如使用performSelector:withObject:afterDelay :)。