【问题标题】:Schedule an iOS app task to run while in the background安排 iOS 应用程序任务在后台运行
【发布时间】:2012-05-19 10:51:37
【问题描述】:

我正在为客户端编写一个应用程序,用户将在白天输入数据,然后在晚上的给定时间点(例如午夜)将当天的用户数据上传到服务器。

因此,我需要安排一个方法在午夜在我的应用程序上运行,即使应用程序在后台也是如此。然后,此方法会将收集的数据与服务器同步并下载任何更改。

为了实现这一点,我想我需要将应用程序设置为始终在后台运行(即超过 10 分钟),然后安排该功能在特定时间后运行。我是否使用performSelector: withDelay: 来执行此操作?还是我需要更强大的东西,因为应用程序将在后台运行?

谢谢大家!

【问题讨论】:

  • 你有解决办法吗?

标签: ios background


【解决方案1】:

您可以查看 UILocalNotifications。您可以安排该事件发生,然后设置一个徽章图标,让用户知道它处理了某些事情(或没有处理)。

关于这些HERE的信息

【讨论】:

  • 我不希望用户知道有关数据同步的任何信息,因此理想情况下,我会 (a) 将本地通知安排在午夜,然后 (b) 在通知代码运行的午夜安排我可以执行数据同步,然后不在屏幕上发出任何通知。这听起来可行吗?或者要使用本地通知,我必须在屏幕上发出警报吗?
  • 感谢您的帮助,顺便说一句!非常感谢。
  • 我认为你可以做你想做的事,而不需要给用户一个视觉指示器。
  • 据我所知,UILocalNotification 将安排在午夜,但如果应用程序在午夜处于后台,它将显示警报。用户必须触摸警报才能处理代码。您是否知道一种方法可以让应用程序在 LocalNotification 将显示给用户时在后台运行同步?或者一旦它在后台,它是否超出了应用程序的控制?
  • 据我所知,一旦应用程序在后台处理事件,唯一的方法是使用本地或推送通知。
【解决方案2】:

我认为您的应用程序或您正在尝试做的事情不符合 Apple 对长时间运行后台任务的要求。从Apple.查看此文档的“实现长时间运行的后台任务”部分

【讨论】:

  • 这是一个很好的观点 - 但实际上该应用程序可能有资格继续进行位置跟踪。午夜数据同步的原因是因为白天用户可能处于互联网连接之外。因此,也许最好的选择是跟踪主要的位置变化,并在每次变化时检查互联网连接。如果用户有足够强的信号,则可以从那里开始同步,然后关闭数据同步,直到第二天。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-16
  • 1970-01-01
  • 2020-01-30
  • 1970-01-01
  • 1970-01-01
  • 2012-05-27
  • 2015-04-25
相关资源
最近更新 更多