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

标签 ios suspend wakeup

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

应用程序请求的功能是:

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

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

  • 应用应存储过去 3 分钟的所有新位置

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

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

示例案例: 用户在 9:00:11 移动到位置 53.432、13.245、在 9:01:20 移动到位置 53.235、13.435、在 9:03:10 移动到位置 54.002、13.768 超过 10 米。 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.432、13.245、 9:01:20: 53.235, 13.435

应用程序在 9:06:00 发送从 9:03:00 到 9:06:00 的所有位置: 9:03:10:54.002、13.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

关于ios - 按时间间隔从后台唤醒应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34731214/

相关文章:

ios - UITextView 控制换行符

firebird - 如何在 Firebird 中执行返回结果集的过程

android - 如何在 Android 设备上启用磁盘挂起?

osx-mavericks - 使用 killall cfprefsd 刷新首选项缓存导致在 OS X 10.9.5 上过度唤醒

iphone - IOS中keychainWrapper中存放NSArray或NSDictionary

ios - Swift 4 泛型数组作为泛型类中的参数

ios - 如何在 Swift 的 plus 设备上增加字体和大小?

C++ 保护进程不被挂起

linux - 设置唤醒警报的 bash 脚本设置了错误的时间

安卓唤醒锁