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

时间:2015-08-17 09:35:12

标签: ios swift notifications push-notification

我已经制作了一个应用程序,需要每1分钟向服务器发送一次位置和状态更新。 我尝试了以下方法,但没有一个帮助我。对此有什么解决方案吗?

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

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

  

此API不像计时器任务,系统将决定何时调用   处理程序取决于许多约束。如果你设置timeInterval   2.00f(2secs),每2(最小)秒调用一次处理程序。

3 - LocationUpdate - 再次这种方式不起作用,因为它只在您移动至少500米时运行您的应用程序。

  

只要设备移动500米,应用就会收到通知   或者更多来自之前的通知。不应该期待   通知频率高于每五分钟一次。如果   设备能够从网络中检索位置管理器的数据   更有可能及时发送通知。

4 - 推送通知 - 在一篇文章中说,在这个方法中你可以在规定的时间内运行一个应用程序,它确实可以!

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

此外,您无法每1分钟运行一些代码。它只是向用户显示通知。用户应点按您的通知,然后点击didReceiveLocalNotification 可以使用,你可以运行代码。

1 个答案:

答案 0 :(得分:1)

正如Apple在documentation中所述:

  

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

     
      
  • 在后台播放用户可听内容的应用,例如音乐播放器应用
  •   
  • 在后台录制音频内容的应用
  •   
  • 随时向用户通知其位置信息的应用,例如导航应用
  •   
  • 支持互联网协议语音(VoIP)的应用
  •   
  • 需要定期下载和处理新内容的应用
  •   
  • 从外部附件接收定期更新的应用
  •   
     

实施这些服务的应用必须声明他们的服务   支持和使用系统框架来实现相关方面   那些服务。声明服务可以让系统知道哪个   您使用的服务,但在某些情况下,它是系统框架   实际上会阻止您的申请被暂停。

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