在后台模式下运行函数的替代方法

Posted

技术标签:

【中文标题】在后台模式下运行函数的替代方法【英文标题】:Alternative for running a function in background mode 【发布时间】:2015-10-18 14:19:02 【问题描述】:

我正在创建一个应用程序,它将每 20 分钟向您发送一次本地通知。我遇到的问题是一旦应用程序进入后台模式,触发函数运行的计时器会执行一些代码,然后向用户发送通知将不会运行。有没有其他方法可以做到这一点?此计时器循环运行,每 20 分钟重置一次并运行一个函数。

谢谢

【问题讨论】:

你在这个你想在后台定期运行的函数中做什么?有一些特殊情况是允许后台操作的。但是,一般来说,你不能按照你的要求去做(因为大量的应用程序会开始这样做,它会耗尽我们的电池)。但如果我们知道您想要做什么,我们或许可以提供建议。 顺便说一下,App Programming Guide for ios 的 Background Execution 章节清楚地概述了所有这些不同的场景。 谢谢抢。我试图每 20 分钟触发一次本地通知,尽管在这些通知之间我必须运行一个函数来检查是否需要它们。如果这有帮助? 遗憾的是,不,这仍然太模棱两可。后台执行标准非常具体和狭窄(例如 VOIP、导航、音乐等)。其他类型的后台操作(例如定期从网络获取数据)受到进一步限制(例如,您无法决定调用它的频率;操作系统会为您决定)。同样,如果没有更详细地说明这个函数究竟试图做什么,我们也无能为力。 该函数根据用户设置的时间窗口检查当前时间,如果当前时间在该窗口内,我希望它继续发送通知。 【参考方案1】:

当然。查看UILocalNotification 的文档。当您希望通知消失时,您可以将fireDate 设置为精确的秒。它还具有可用于指定重复间隔的参数。

您不能强制用户激活应用来运行您的功能。一旦用户点击通知并且您的应用程序变为活动状态,您就可以执行您需要的所有逻辑(可能还包括处理过去的“错过”通知)。

【讨论】:

谢谢,但我已经这样做了,这不是问题。问题是我需要运行该函数,因为它执行一些代码来检查某些内容,然后如果该内容正确,则能够发送另一个推送通知。问题是我无法在后台模式下运行该功能... 您不能强制用户激活应用程序来运行您的功能。一旦用户点击通知并且您的应用程序变为活动状态,您就可以执行您需要的所有逻辑(也许还包括处理过去的“错过”通知)。 这又不是解决方案,因为我需要在后台模式下运行此功能。不要让用户打开应用程序然后运行函数,因为这不是答案。发出的通知是对某事的提醒,它们每 20 分钟发出一次,除非函数内的某些代码是否定的。因此,我正在寻找如何在后台运行此功能的替代方法,或者可以达到相同最终结果的方法。 如前所述,这是不可能的。您可以运行的唯一后台活动是下载。您需要修改您的架构并找到一种方法来确定正确的行为而不运行您的功能。 好的,谢谢您的帮助。如前所述,我已经要求您提供替代方案,我已经意识到这是不可能的。

以上是关于在后台模式下运行函数的替代方法的主要内容,如果未能解决你的问题,请参考以下文章

在后台/前台模式下运行冗长的核心数据删除

如何永远在后台模式下运行应用程序?

浏览器可以检测浏览器何时在前台或后台模式下运行? [复制]

sh 在后台模式下将Bash放入正在运行的容器中。

当应用程序未使用或处于后台模式时,React Native 是不是有函数生命周期正在运行?

在后台模式下播放音效