4

我有一个 iPhone 应用程序,例如用于 iPhone 的 facebook。我的应用程序必须连接我的服务器并定期每两个小时读取一次所有消息。我有一个线程来读取所有消息,但是当应用程序终止时,线程无法工作。线程能否独立于主委托运行,或者我如何找到解决此问题的方法?

4

2 回答 2

6

你不能让你的应用在后台做事。有一个 API 可以完成上传照片之类的任务,但即使这样也会在大约 10 分钟后被杀死。

Apple 推送通知服务似乎是解决您的问题的最合适的解决方案。您的服务器会通知设备发生了新的事情,并在用户打开应用程序时获取实际消息。

编辑:从 iOS 7 开始,Apple 实现了一项功能,您可以在其中安排正在运行的任务以在后台获取数据。这些任务不能保证在任何特定时间运行。请参阅iOS 7 的发行说明和下面的链接方法:

通过联系服务器定期更新其内容的应用程序可以向系统注册并定期启动以在后台检索该内容。要注册,请在应用的 Info.plist 文件中包含 UIBackgroundModes 键和获取值。然后,当您的应用程序启动时,调用setMinimumBackgroundFetchInterval: 方法来确定它接收更新消息的频率。最后,您还必须 在您的应用委托中实现application:performFetchWithCompletionHandler:方法。

于 2012-06-04T13:08:30.073 回答
2

没有解决办法。

Apple 不允许应用程序在后台运行,除非它们属于特定类型,例如位置、音频或 voip 或报摊(如果使用 shouldBeginBackgroundTaskWithExpirationHandler,您的应用程序可以在处于活动状态后继续运行大约 10 分钟)。

没有解决方法,许多其他人都想知道如何做和自己一样的事情,但没有合法的方法。您的应用无法安排任何类型的定期回拨活动。

一旦应用程序进入挂起或终止状态,它可以运行的唯一方法是让用户显式地启动它,或者响应本地通知或远程推送通知。

于 2012-06-04T15:01:14.267 回答