在后台运行应用程序?

时间:2011-06-09 04:09:27

标签: iphone objective-c ios

是否可以在后台保持套接字连接,以便能够随时推送新数据并提醒用户?

3 个答案:

答案 0 :(得分:19)

这个问题的答案肯定是肯定的。如果您处于后台状态,则可以保持连接打开并处理来自服务器的消息。

不幸的是,这里的复杂性在于您无法控制应用程序所处的状态:

  • 前景 - 用户点按了您的图标,应用程序正在运行,同时显示用户界面。
  • 已暂停 - 用户之前在前台运行您的应用,但是通过点击主页按钮或接听电话将其暂停。基本上你的应用程序是“冻干”的,并且在用户恢复之前(从它停止的地方开始)或者由操作系统终止(见下文),它将保持不活动状态。
  • 后台 - 该应用之前已在前台运行,但由于用户已完成某项操作,已移至后台状态。通常情况下,在这种情况下,您的应用会转移到暂停状态,但有些事情您可以作为开发人员来防止即时“冻干”并进入后台(见下文)。如果significant change event被唤醒,您的应用也将处于后台状态。
  • 已终止 - 您的应用已从内存中卸载,下次启动时将从头开始。当您双击主页按钮然后点击应用程序图标旁边的x时会发生这种情况。它将应用程序从挂起的状态移动到已终止状态。如果操作系统决定它需要为最近运行的应用程序提供空间并且您的应用程序已被暂停很长时间,也会发生这种情况。

显然,这里的诀窍是如何尽可能长时间地保持后台状态。有几种方法可以做到这一点:

  • 请求更多时间 - 如果您ask for it关闭应用,则最多可以获得10分钟的额外后台处理。
  • 使用UIBackgroundMode - 您可以通过添加相应的UIBackgroundMode声明自己为 voip 音频位置应用值到pList。这些类型的应用程序有特殊要求,您可以查看here

所以这些方法并非没有自己的问题(在商店获得批准就是其中之一),因此我倾向于同意其他答案,使用push notifications可能是通知用户的最佳方法。使用notification improvements in iOS5,这将成为未来最好的用户体验。

答案 1 :(得分:1)

您可以在应用关闭后约15分钟内在后台保持套接字连接活动(或执行任何其他操作)。如果您的应用程序适合其支持的类别之一,Apple还支持更专业的后台处理模式(特别是音频,voip和位置)。请参阅here

如果您想要无限期地发送用户通知,则需要使用Apple Push Notification Service。这允许您的应用在未运行时继续接收通知,并且由于一次只有一个连接到APN服务,因此节省了资源。

答案 2 :(得分:0)

您绝对可以使用本地和推送通知提醒用户。 据我所知,您可以在有限的时间内保持连接打开。

查看here了解更多详情。

相关问题