【问题标题】:How can an iOS app run a function in the background in a recurring manner (i.e. once an hour)?iOS 应用程序如何以重复方式(即每小时一次)在后台运行功能?
【发布时间】:2011-08-10 09:13:51
【问题描述】:

在支持多任务处理的设备上,我希望我的 iOS 应用在应用未运行(即暂停)时在“后台”运行一个功能。我知道 iOS 支持在后台运行任务,但我不确定如何使该功能重复出现(并且仅当应用程序不在后台时)。最好的方法是什么?

我对在后台运行一个长期功能不感兴趣,而是一个短期功能来简单地更新应用程序徽章#。然而,这个数字是根据应用的数据动态生成的,需要针对核心数据运行查询。

为了进一步澄清,是的,我的核心数据不会改变,但徽章代表了一些到期项目。随着时间的推移,会有更多的项目到期,所以我想更新徽章以显示随着时间的推移到期的正确项目。因此,如果现在有 5 个项目到期,但半小时后又有 3 个项目到期,那么到下一个小时到来时,即使核心数据本身并没有发生任何变化,也将有 8 个项目到期。

【问题讨论】:

  • 您可以使用预定的本地通知来通知用户,但我认为这不符合这一点。你想在后台运行什么活动?
  • 你的CoreData数据库在应用挂起时也不会改变,那么这个数字怎么会改变呢?

标签: iphone ios multitasking recurring recurring-events


【解决方案1】:

不能,唯一允许在后台运行的任务是:音频、voip 和位置。

【讨论】:

  • 澄清一下,我对在后台运行长期功能不感兴趣,而是对简单地更新应用程序徽章#的短期功能感兴趣。然而,这个数字是根据应用的数据动态生成的,需要针对核心数据运行查询。
  • 我猜数据是本地的,所以推送通知不是一个选项?
【解决方案2】:

如果存储在 Core Data 中的数据没有变化,为什么您需要每小时更新一次徽章数据? IE。应用没有运行?

您可以像之前发布的那样使用推送通知来执行此操作,也可以在应用程序关闭或后台运行时根据数据使用计划的本地通知。我认为这些是你唯一的选择。

【讨论】:

  • 正如我在编辑的问题中提到的,徽章代表了许多到期项目。随着时间的推移,这个数字会增加,我希望这个数字能准确反映此时到期的项目数量。
  • 然后您需要计算徽章值需要减少的时间,并使用本地通知进行更新。
猜你喜欢
  • 2020-10-27
  • 2015-02-12
  • 1970-01-01
  • 2016-11-05
  • 1970-01-01
  • 1970-01-01
  • 2015-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多