一尘不染

后台的iOS计时器

swift

我希望我的iOS应用程序在后台运行并且关闭时启动计时器。计时器必须每30分钟检查一次新的通知。在计时器函数中,它们每30分钟调用另一个函数showNotification()。

当应用未在后台运行/在后台运行时,我该如何执行此计时器以及必须在哪个位置调用计时器。


阅读 268

收藏
2020-07-07

共1个答案

一尘不染

如果应用程序不在前台且具有100%的确定性,则无法执行任何操作。您可以使用后台获取来定期唤醒,但是您无法控制它何时发生。

尽管存在一些技术上的变通办法,甚至可能还有一些棘手的解决方案(在后台播放静音音频),但在我看来,无需使用计时器和后台获取就可以解决您的问题。

只需实现远程通知。当您的iOS收到有关您的应用程序的通知时,它将唤醒该应用程序并等待一段时间。然后,您可以控制向用户显示哪些通知,甚至可以在后台加载一些数据。

广义而言,您需要:

  • 在应用启动时注册远程通知(通常在application:didFinishLaunching:中)
  • 当您收到通知令牌时,将其发送到将向您发送通知的Web服务器(此令牌可以更改,因此请确保在启动应用程序时始终将其发送到Web服务器)
  • 当有新内容可用时,您的Web服务器可以使用令牌将有效载荷发送到您的应用程序(您选择的语言可能已经具有用于此的库。例如,如果您使用Ruby,则有Houston
2020-07-07