以编程方式更改所需的背景模式

问题描述:

我有一个需要在后台使用基于位置的服务的应用程序。 因此,在info.plist中,我将setrRequired背景模式设置为“应用寄存器进行位置更新”。 和一切工作正常。以编程方式更改所需的背景模式

我的问题是,我如何禁用它在后台运行? 是否可以添加选项并让用户将其设置为开/关?

因为我知道info.plist不能编程改变 所以我该如何做到这一点?

关键是描述 - 它支持注册位置更新。所以你所要做的就是告诉你的位置管理器在应用程序进入后台(或之前)时停止更新,并且它不应该在后台使用位置更新。

没有办法在运行时重新定义应用程序的info.plist功能。

+0

谢谢,我解决了问题 – icefox 2011-12-27 06:08:41

传统上(实际上),您应该在您的应用程序正在使用时将您的位置管理器设置为-startUpdatingLocation。如果让它全天运行,这会很快耗尽你的电池。通常你会调用它,获取你需要的信息,或者更新信息,调用-stopUpdatingLocation。这使得一切都休息,没有更多的电池消耗。

如果您仍然希望延长电池使用寿命,那么在滚动到背景时,您的准确度选项非常有限。主要的是-startMonitoringForSignificantChanges。这个位置更新主要依赖于手机塔的切换和三角测量。因此,如果您的用户没有移动很远的距离,或者处于信号接收有限的区域,请不要期望这种背景模式工作得很好。

你其他的后台选项是-startMonitoringRegion。这使您可以在地点周围创建一个基于地区的区域,并在您输入-enterRegion或-exitRegion时收到通知。这些都必须在进入后台之前设置。他们确实有更好的位置更新的额外好处。改变WiFi,手机信号塔切换,甚至使用位置更新的其他应用程序。操作系统获取所有位置更新并将其汇集到一起,并使其可用于在操作系统中注册的任何区域。

您仍然可以选择在后台运行位置更新,但您的用户在使用30分钟后不会感激他们没有电池。

祝你好运。有很多例子说明如何在SO和网络上实现所有这些。诀窍是找到适合你的正确组合。祝你好运。

+0

谢谢,因为电池寿命,甚至用户关闭应用程序,GPS图标仍然存在。所以我想给一个使用可以选择的选项是gps继续在后台运行。 – icefox 2011-12-27 03:58:08