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



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

应用程序的请求功能为:

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

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

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

  • 应用程序应每隔3分钟发送存储的位置(最近3分钟)。(!即使用户已经有一段时间没有移动了,应用程序也应该连接到url.

  • 应用程序主要在后台运行。

示例案例:用户在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应用程序发送9:00:00至9:03:00的所有位置:9:00:11:53.43213.245,9:01:20:53.235,13.435

在9:06:00应用程序发送从9:03:00到9:06:00的所有位置:9:03:10:54.000213.768

在9:09:00应用程序发送从9:06:00到9:09:00的所有位置:"没有新职位"……

问题是:应用程序必须被唤醒,以便处理向服务器发送信息等操作。一个可能唤醒应用程序的事件是超过10米的移动。但由于用户从9:03:10一直移动到9:15:00,所以没有任何事件会唤醒应用程序。应用程序保持暂停状态,不会在9:15:00 下一次移动之前发送9:03:10的位置

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

(据我所知,一个定时器应用程序在应该发出警报声音时并没有醒来。相反,它正在安排一个本地通知,在警报发出时启动。)

但是,如果可以安排本地通知,应用程序就不能安排其他动作,比如"叫醒我"吗?

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

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

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

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

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

最新更新