【发布时间】:2011-05-23 18:33:39
【问题描述】:
这是我的情况。我正在开发一个使用核心位置来确定设备位置的 iPhone 应用程序。有一个图标:位置服务图标,出现在设备的状态栏中。我知道该图标的目的是告诉用户定位服务当前正在被某物使用。对于有洞察力的用户来说,这意味着电池寿命缩短。因此,我想确保仅在我的应用实际使用位置服务时才显示该图标。
输入混乱。作为开发者,我们不能通过官方 SDK 访问状态栏。这意味着操作系统将根据应用程序的行为自动显示该图标。尽我所能,我找不到一个明确的定义究竟是什么导致该图标出现。
就目前而言,该图标会在我的应用代理获得控制权之前出现,并且只要应用已安装、运行与否就会保持可见。这显然是最坏的情况,这让我怀疑我对CLLocationManager 的使用。我会详细说明我的使用,但作为一个极端情况,我尝试删除 CoreLocation 框架(以及我怀疑也使用 CoreLocation 的 MapKit 框架)以及与位置相关的所有代码。该应用程序仍然导致图标出现并一直存在,直到我删除该应用程序。然后我制作了一个全新的应用程序,除了更改应用程序标识符以匹配我的应用程序的标识符外,没有进行任何更改。图标仍然出现。我更改了标识符以使用我的一个未使用位置的应用程序的标识符,并且图标没有出现。我确实确保在此测试期间重置设备。
这个问题真的要死我了。我无法想象应用程序 ID 与位置服务图标有什么关系,但我看不出它持续存在的其他原因。这似乎是一个隐藏真正问题的红鲱鱼,但我对真正的问题不知所措。
【问题讨论】:
-
您是在应用启动后立即开始位置更新,还是之后的某个时间(例如按下按钮后)?
-
我在 applicationDidBecomeActive: 委托方法中启动它们。因此,只要应用启动。
-
查看我编辑的答案。不幸的是,您在图标未显示方面很不走运,但这并不一定意味着电池正在以更高的速度耗尽。
-
是的,我已经读到图标的存在实际上并不意味着位置服务正在积极运行,我相信我对 CLLocationManager 的简单使用是正确的。撇开电池寿命不谈,对用户来说,这仍然是一种不幸和令人沮丧的误解。
标签: iphone objective-c core-location