1

我正在开发一个 iPhone 应用程序,我在其中使用 GPRS 不时更新用户的当前位置。

我发现电池正在耗尽。

谁能帮我解决这个问题?

4

1 回答 1

6

你的观察是正确的。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中的更多信息

于 2013-07-16T08:46:19.323 回答