如何无限期地每1分钟运行一个iOS应用程序?

Ehsan Razm khah

我制作了一个需要每1分钟将位置和状态更新发送到服务器的应用程序。我尝试了以下方法,但是没有一个方法可以帮助我。有什么解决办法吗?

1- NSTimer-许多人建议这样做。但是问题出在backgroundMode上,并且只能工作20分钟。该应用程序停止发送数据之后。

2- BackgroundFetchMode-开始时看起来像是正确的解决方案。但是此功能不能保证每1分钟运行一次应用程序。它具有iOS决定应运行哪个应用程序的算法。

该API与计时器任务不同,系统会根据许多限制决定何时调用处理程序。因此,如果将timeInterval设置为2.00f(2secs),则每2+(最小)秒调用一次处理程序。

3- LocationUpdate-同样,这种方式也不起作用,因为它仅在您移动至少500米时才运行您的应用程序。

当设备距其先前的通知500米或更多距离时,应用程序会期望收到通知。它不应期望通知的频率超过每五分钟一次。如果设备能够从网络检索数据,则位置管理器更有可能及时传递通知。

4-推送通知-在用这种方法发表的文章中,您可以在定义的时间内运行应用程序,确实可以!

您可以在定义的时间表时间内安排通知。但问题是向用户显示通知。我需要在背景中保持沉默。

另外,您不能每1分钟运行一些代码。它只是向用户显示通知。并且用户应点击您的通知,然后didReceiveLocalNotification可用,您可以运行代码。

丹尼尔

如Apple在其文档中所述

在iOS中,只允许特定的应用类型在后台运行:

  • 在后台播放可听内容的应用程序,例如音乐播放器应用程序
  • 在后台录制音频内容的应用
  • 始终让用户了解其位置的应用程序,例如导航应用程序
  • 支持互联网协议语音(VoIP)的应用
  • 需要定期下载和处理新内容的应用
  • 从外部配件接收定期更新的应用

实现这些服务的应用必须声明它们支持的服务,并使用系统框架来实现这些服务的相关方面。声明服务可使系统知道您使用的服务,但在某些情况下,实际上是系统框架阻止了应用程序被挂起。

您可以在链接中阅读有关实现和声明这些后台任务的所有信息。但是,如果您的应用程序是另一种类型的应用程序,或者您无法使用系统框架,则您的应用程序将无法无限期地在后台运行。即使是这样,您也应该始终希望系统出于某种原因(例如重新启动手机)而停止任务。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Select系统调用无限期地挂在一个w / w应用程序中。

如何使烧瓶应用程序每5分钟运行一次?

每1分钟运行一次springboot应用程序,并同步每个控制器

iOS应用程序如何在后台无限期地保持TCP连接的活动?

Android-每15分钟运行一次后台任务,即使应用程序未运行

Express - nodejs 应用程序在浏览模块时无限期地旋转

应用程序不会无限期地监听数据库连接吗?

如何创建在启动Django应用程序后无限期运行的单例芹菜任务?

使用较早版本的Swift构建的应用程序是否可以无限期地在应用程序商店中使用?

是否有一个目的是无限期地持有形式的物体?

使用javascript无限期地创建一个随机数

无限期地重复一个函数,最好不使用setInterval()

在Mac上每30分钟打开一次应用程序

如何无限期运行 Google App Engine 应用

如何在每加载1分钟后在地图上保持我的最后一个位置

应用程序的html加载,但是使用angular构建的js函数会无限期地卡住加载

如何每8小时1分钟运行一次CRON

如何每5分钟在javascript中的数组内部调用一个函数

PERL如何每5分钟在perl中调用一个脚本

流星应用程序:初始加载> 1分钟,7.4M,800个请求

WPF 应用程序无限期进度条未显示,但进程正在后台运行

如何从火力地堡处理onNotificationReceived每10分钟一班,而应用程序是在后台。安卓9.0

我可以在 Google API 中使用一个刷新令牌无限期地生成访问令牌吗

当应用程序终止时,每5分钟在后台调用一次Activity

如何每30分钟自动刷新一个存储过程和一个表?

如何在每天的最后一分钟运行一个 cron 任务?

如何每5分钟启动一个调度程序,而在Android 8(Oreo)中没有任何失败-(尝试过的Jobscheduler最小限制为15分钟,并且不可靠)

如何每15分钟运行一次android函数,尤其是每天15分钟?

在运行主程序时每5分钟运行一次功能