【发布时间】:2015-06-22 20:04:41
【问题描述】:
我面临这样一种情况,我们希望根据用户是否启用了位置服务来启动特定流程。这部分是微不足道的。但是,如果用户关闭或打开位置服务,我们希望通过更改我们的流程来扩展此功能。我们目前能够监控、更改或处理用户何时关闭位置服务。我的问题是,当用户重新打开位置服务时,如何通知我们的应用程序?
这是我们目前正在使用的内容
- iOS 7
- 后台定位模式已启用
- 我们始终使用请求来获取位置服务
这是我们尝试过的
- 我们尝试在用户关闭定位服务后设置一个计时器,定期检查用户是否重新开启定位服务。由于许多原因,这不太理想。除此之外,一旦关闭位置服务,计时器就会被终止,因为不再需要后台服务并且操作系统会终止我们的进程。这是可以理解的。
- 我们还采用了通知用户他们刚刚停止进程并且需要重新打开定位服务的方法。这种方法有两个问题。
- 如果用户没有启用通知,那么这种方法根本没有用。
- 如果他们确实启用了通知,那么我们首先需要用户重新打开位置服务,然后他们需要打开应用备份以让我们的应用“唤醒”备份。
提前谢谢你!
【问题讨论】:
-
我听说有些应用程序在后台保持活动使用其他后台模式(例如播放和录制背景音频)。如果应用程序可以工作,您可以使用计时器来检查位置服务状态。但是,如果位置管理器在后台创建,它将仅存在 180 秒(在这种情况下,您需要使用位置管理器区域(创建并重新创建它们))。但是你必须向苹果解释为什么你的应用使用其他后台模式
-
@gaRik Clever,我们将尝试的一件事是使用后台获取模式,而不是执行获取,我们将只检查启用的位置。不过,这可能是 Apple 的问题......
-
后台抓取偶尔会工作,每天几次,随机时间
标签: ios ios7 ios8 core-location cllocationmanager