【问题标题】:Running apps in background?在后台运行应用程序?
【发布时间】:2011-09-11 09:25:52
【问题描述】:

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

【问题讨论】:

标签: iphone objective-c ios


【解决方案1】:

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

不幸的是,这里的复杂性在于您对应用程序所处的状态没有太多控制权:

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

所以很明显这里的诀窍是我如何尽可能长时间地保持在 background 状态。有几种方法可以做到这一点:

  • 请求更多时间 - 如果您ask for it,您的应用关闭后,您可以获得最多 10 分钟的额外后台处理。
  • 使用 UIBackgroundMode - 您可以通过将相应的 UIBackgroundMode 值添加到列表。这些类型的应用有特殊要求,您可以查看here

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      查看here了解更多详情。

      【讨论】:

        猜你喜欢
        • 2014-01-10
        • 2012-10-31
        • 2013-04-11
        • 2015-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多