我正在开发一个 iPhone 应用程序,我在其中使用 GPRS 不时更新用户的当前位置。
我发现电池正在耗尽。
谁能帮我解决这个问题?
我正在开发一个 iPhone 应用程序,我在其中使用 GPRS 不时更新用户的当前位置。
我发现电池正在耗尽。
谁能帮我解决这个问题?
你的观察是正确的。GPS 服务是耗电量大的操作。它涉及启动车载无线电并查询可用的手机信号塔、Wi-Fi 热点或 GPS 卫星,这可能需要几秒钟的时间。长时间运行标准定位服务会耗尽设备的电池电量。
iOS 人员为此设计了一个解决方案。其称为意义位置变化。重大变化定位服务为具有蜂窝无线电的设备提供低功耗定位服务。此服务仅在 iOS 4.0 及更高版本中可用,还可以唤醒暂停或未运行的应用程序。其工作方式是您订阅此服务并请求 iOS 通知您,以防用户发生“指示位置”更改。“重要”的定义不在你的手中。实际上,这就是节省电池的原因。您不查询位置。你得到更新。
在我看来,这个 API 非常出色,并且给出了一个“相当”准确的位置。除非你正在构建一个跟踪应用程序,否则这个 API 是一种非常省电的方式。我无法告诉你有多少应用程序(付费和免费)被我无情地删除,仅仅是因为它们滥用了定位服务并耗尽了我的电池。想象一下,由于电池没电了,用户的 iPhone 在半天内无法使用。要非常注意这一点。启动此服务的方法是 -
- (void)startSignificantChangeUpdates
{
// Create the location manager if this object does not
// already have one.
if (nil == locationManager)
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
[locationManager startMonitoringSignificantLocationChanges];
}
在此之后,与标准位置服务一样,位置数据被传递给委托对象。您可以根据您的用例使用它。Apple Location Docs中的更多信息