Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何使用CLLocationManager限制应用程序的电池电量消耗_Iphone_Ios_Objective C_Cllocationmanager_Batterylevel - Fatal编程技术网

Iphone 如何使用CLLocationManager限制应用程序的电池电量消耗

Iphone 如何使用CLLocationManager限制应用程序的电池电量消耗,iphone,ios,objective-c,cllocationmanager,batterylevel,Iphone,Ios,Objective C,Cllocationmanager,Batterylevel,我正在开发一个iPhone应用程序,在该应用程序中,我使用GPRS不时更新用户的当前位置 我发现电池快没电了 有人能帮我解决这个问题吗?你的观察是正确的。GPS服务是电力密集型操作。它包括接通车载收音机的电源,查询可用的手机发射塔、Wi-Fi热点或GPS卫星,这可能需要几秒钟的时间。让标准定位服务长时间运行可能会耗尽设备的电池电量 iOS用户已经为此设计出了一个解决方案。它被称为意义位置变化。重大变化定位服务为配备蜂窝无线电的设备提供低功耗定位服务。此服务仅在iOS 4.0及更高版本中可用,还可

我正在开发一个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];
}

之后,与标准位置服务一样,位置数据被传递到委托对象。您可以根据您的用例使用它。更多信息请访问

您的观察是正确的。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];
}

之后,与标准位置服务一样,位置数据被传递到委托对象。您可以根据您的用例使用它。更多信息请访问

您真的是说您使用GPRS定位该职位吗?但这并非不可能,而是相当不同寻常。不管怎样,您获取当前位置的频率是多少?假设您正在谈论使用位置服务:减少用电的一种方法是要求较低的精确度。使用适用于您的应用程序的最低精度。如果您不需要后台更新,请不要请求后台更新;如果您不需要后台更新,请不要说您是指导应用程序。此外,您还可以使用仪器来分析您的用电量。我使用了CoreLocation framework。[locationManager StartLocationUpdate]和[locationManager StopLocationUpdate]您真的是说您使用GPRS定位该位置吗?但这并非不可能,而是相当不同寻常。不管怎样,您获取当前位置的频率是多少?假设您正在谈论使用位置服务:减少用电的一种方法是要求较低的精确度。使用适用于您的应用程序的最低精度。如果您不需要后台更新,请不要请求后台更新;如果您不需要后台更新,请不要说您是指导应用程序。此外,您还可以使用仪器来分析电源使用情况。我使用了CoreLocation框架。[locationManager StartLocationUpdate]和[locationManager StopLocationUpdate]