按时间间隔从后台唤醒应用程序?

时间:2016-01-11 21:15:04

标签: ios suspend wakeup

是否有可能在最新的ios上使跟踪应用每隔x分钟唤醒一次,以便将存储的位置发送到网址,即使用户没有移动?

该应用的请求功能包括:

  • 应用程序根据距离过滤器获取位置(例如:当用户移动超过10米时,仅通过gps获取坐标。

  • 不允许应用程序立即将每个新职位发送到网址

  • 应用程序应存储最近3分钟的所有新位置

  • 应用程序应以3分钟的间隔发送(最近3分钟)存储的位置。 (!即使用户暂时没有移动,app也应该连接到url。

  • App主要在后台运行。

示例案例 用户在9:00:11移动了10多米到位置53.432,13.245,9:01:20到位置53.235,13.435和9:03:10到54.002,13.768。在9:15:00之前不再超过10米的移动。 所以从9:00:00到9:15:00设备有3个坐标。 服务器的订单是:从9:00:00开始,以3分钟的间隔发送所有位置。

请求的结果是: 在9:03:00 app从9:00:00到9:03:00发送所有位置: 9:00:11:53.432,13.245, 9:01:20:53.235,13.435

9:06:00 app从9:03:00到9:06:00发送所有位置: 9:03:10:54.002,13.768

9:09:00 app从9:06:00到9:09:00发送所有职位: “没有新的职位”......

问题是: 必须唤醒应用程序,以便处理诸如向服务器发送信息之类的操作。 一个可以唤醒应用程序的事件将是一个超过10米的运动。 但由于用户没有从9:03:10移动到9:15:00,因此没有事件唤醒应用程序。应用程序保持暂停状态,并且在下次移动时间为9:15:00之前不会发送9:03:10的位置

解决方案吗 还有其他可能性让应用程序在9:06:00唤醒并发送存储位置吗? 应用程序有内部计时器可以唤醒吗?

(根据我的理解,当应该发出警报声时,计时器应用程序不会被唤醒。相反,它会在警报时安排本地通知点火。)

但是,如果可以安排本地通知,那么应用程序是否无法安排其他操作,例如“叫醒我”?

非常感谢您的时间和帮助!

1 个答案:

答案 0 :(得分:1)

应用程序可以尝试运行后台任务,但它不能强制自己保持存在 - 操作系统会在几分钟后将其关闭,无论本地计时器处理程序或通知如何。

您最好的选择是,一旦用户移动超过10米,服务器就会开始发送推送通知。您可以拥有一个可以在后台唤醒应用程序的处理程序,您可以使用此处理程序将数据发送回服务器。

关于何时使用某些背景模式有很多规则,所以如果您以前没有遇到它,请查看此链接。

https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html