如何在iOS中运行频繁的后台任务

如何在iOS中运行频繁的后台任务,ios,flutter,apple-push-notifications,background-fetch,Ios,Flutter,Apple Push Notifications,Background Fetch,我正在尝试开发一个颤振应用程序,当服务器上的某些状态发生变化时,它有时会通知用户,并根据用户的配置发出特定的通知。有几种状态类型,每种状态在一小时内最多可以更改几次,但用户只能看到根据其本地设置和当前状态生成的通知(通常每天只有几次通知)。向用户显示哪些通知以及何时显示取决于用户设备上的多个设置 我已经尝试了两种方法,这两种方法都适用于Android,但都不适用于iOS: 运行常规后台提取以从服务器获取状态,并在此时生成通知。在Android上,这种方法可以正常工作,因为后台任务会以指定的间隔定

我正在尝试开发一个颤振应用程序,当服务器上的某些状态发生变化时,它有时会通知用户,并根据用户的配置发出特定的通知。有几种状态类型,每种状态在一小时内最多可以更改几次,但用户只能看到根据其本地设置和当前状态生成的通知(通常每天只有几次通知)。向用户显示哪些通知以及何时显示取决于用户设备上的多个设置

我已经尝试了两种方法,这两种方法都适用于Android,但都不适用于iOS:

  • 运行常规后台提取以从服务器获取状态,并在此时生成通知。在Android上,这种方法可以正常工作,因为后台任务会以指定的间隔定期运行。在iOS上,它偶尔工作一次,但后台获取有时可能无法运行几个小时甚至几天。我相信这取决于用户打开应用程序的频率
  • 当任何状态更改时,从服务器发送仅数据推送通知,并根据当前状态通知用户。这在Android上也可以正常工作,但在iOS上它似乎可以工作几个小时,但随后它停止处理推送通知。同样,我相信这是预期的行为,因为苹果建议每小时只发送2-3次后台通知

  • 简言之,这两种方法似乎都不适用于iOS。是否有我忽略的东西,或者是否有其他建议的方法在iOS上执行这些关键的后台任务?

    我听说iOS在一段时间内没有前台交互时或多或少会停止后台更新,这是有道理的,因为。。。你知道的。。。。电池?;)“有什么我忽略了吗”没有。iOS应用程序不能这样做。你应该在服务器上执行所有处理,并且只在满足条件时发送推送通知。这样,您就不需要使用静默推送,您可以使用常规推送通知,通知显示不依赖于设备后台运行的应用程序。这正是我所担心的。我认为在服务器上为每个用户进行所有处理是不可行的,因为这些服务器的成本太高,而且可能仍然会有无法通过的关键通知:(许多用户甚至不会打开应用程序,但只会对通知感兴趣。前台推送通知是否会始终显示?是否可以在收到前台通知的同时运行后台提取?