我目前正在使用 Objective-C 开发一个 iOS 应用程序,它会将每分钟的 gps 坐标发送到我的 API。
我已经使用了 AFNetworking
和 CoreLocation
,我还希望我的应用程序能够全天运行,但只在上午 8 点到下午 6 点之间发送坐标。
在针对 iOS9 的 iOS 模拟器上一切正常我的应用程序每 1 分钟将他的位置发送到我的 API,即使我按下主页或锁定手机也是如此。
PhoneCall
,网络或 GPS 丢失已得到处理,以保持我的任务运行。
但是当我在某些设备(iOS9 上的 iPhone 4S)上测试它时,位置在平均 1 到 1 个半小时后停止更新。
iOS 是否会在给定时间后在后台关闭我的应用程序?
如果是这样,有没有办法让我的应用在后台至少运行 10 小时,而无需提示设备用户?
苹果“允许”执行长时间运行的后台任务,如果它涉及的话:
“即使在后台运行时,该应用程序也会让用户了解他们的位置。”
这是否意味着后台任务会在一段时间后阻止我的 http 请求?
对于长期部署,我希望我的应用程序可以上传到 App Store,但我已经阅读了很多关于应用程序 GPS 跟踪应用程序的帖子,但都被拒绝了。
这是我的应用应具备的最低要求列表:
- 每分钟将 GPS 坐标发送到我的 API
- 在后台工作至少 10 小时而不关闭或提示用户重新加载 View
是否可以接受这些要求以将我的应用程序上传到 AppStore?
或者我是否必须使用本地/远程通知并提示用户重新加载我的应用程序才能让它运行这么长时间?
最佳答案
强烈建议不需要高精度位置数据的应用程序使用显着变化位置服务。使用此服务,仅当用户的位置发生显着变化时才会生成位置更新;因此,它非常适合社交应用程序或为用户提供非关键的位置相关信息的应用程序。如果发生更新时应用挂起,系统会在后台唤醒它以处理更新。如果应用程序启动此服务然后终止,系统会在新位置可用时自动重新启动应用程序。此服务在 iOS 4 及更高版本中可用,并且仅在包含蜂窝 radio 的设备上可用。
我认为这将适合您的场景。
关于iOS GPS 跟踪应用程序在后台关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34588225/