使用iOS CLLocationManager节约电池

使用iOS CLLocationManager节约电池,ios,core-location,Ios,Core Location,考虑到我的应用程序的限制,我正在尝试使用CLLocationManager来提高能效: 如果应用程序处于模式“A”,请提供尽可能多且准确的位置数据 尽可能的 如果应用程序处于模式“B”,请至少每10分钟签入一次 “足够好”(大约500米)的位置数据 模式“A”和模式“B”必须在应用程序处于 背景 由于约束条件3,我在plist中将“location”添加到UIBackgroundModes中。 我正在配置我的核心位置管理器,如下所示: - (CLLocationManager *)manager

考虑到我的应用程序的限制,我正在尝试使用CLLocationManager来提高能效:

  • 如果应用程序处于模式“A”,请提供尽可能多且准确的位置数据 尽可能的

  • 如果应用程序处于模式“B”,请至少每10分钟签入一次 “足够好”(大约500米)的位置数据

  • 模式“A”和模式“B”必须在应用程序处于 背景

  • 由于约束条件3,我在plist中将“location”添加到UIBackgroundModes中。 我正在配置我的核心位置管理器,如下所示:

    - (CLLocationManager *)manager {
        if (_manager == nil) {
            _manager = [[CLLocationManager alloc] init];
            _manager.desiredAccuracy = kCLLocationAccuracyBest;
            _manager.distanceFilter = kCLDistanceFilterNone;
            _manager.pausesLocationUpdatesAutomatically = NO;
            _manager.delegate = self;
        }
    
        return _manager;
    }
    
    我还定义了如下枚举:

    typedef NS_ENUM(NSUInteger, LocationMonitoringMode) {
        LocationMonitoringModeSignificantChanges, //Mode B
        LocationMonitoringModeContinuous, //Mode A
    };
    
    我是这样用的:

    - (void)setLocationMonitoringMode:(LocationMonitoringMode)mode {
        if (mode == LocationMonitoringModeContinuous) {
    
            [self.manager stopMonitoringSignificantLocationChanges];
            [self.manager startUpdatingLocation];
    
        } else if (mode == LocationMonitoringModeSignificantChanges) {
    
            [self.manager stopUpdatingLocation];
            [self.manager startMonitoringSignificantLocationChanges];
        }
    }
    

    问题:使用CLLocationManager,“切换”是节约电池的有效方法吗?使用
    kclocationaccuracycybest
    kclocationaccuracycy3kilometers
    (gps与蜂窝基站无线电)时,btwn的功耗存在明显差异。但是是否也有较大的成本,比如说
    kclocationaccuracycybest
    kclocationaccuracycynearest10米

    第一个问题:

    对。切换看起来很好。您不必创建两个单独的位置管理器实例

    根据苹果公司关于CoreLocation的文件

    “重大变化”定位服务提供的准确性足以满足大多数应用程序的需要,是标准定位服务的省电替代方案。这项服务使用Wi-Fi来确定用户的位置并报告该位置的变化,使系统能够比其他方式更积极地管理用电

    第二个问题:


    你可以使用苹果公司的能源诊断仪器来查看GPS芯片的供电精度。我们最近的调查表明,当期望的精度或距离滤波器值小于100米时,GPS芯片将通电。仪器提供的能量使用值对于我来说非常粗糙,无法在期望的精确度和电池使用之间得出任何直接的相关关系。然而,根据流行的观点,如果可以的话,不打开GPS芯片是节约能源的一个很好的代表

    kCLOCATIONACURACYBEST
    kCLOCATIONACURACYNEAREST10米的成本相同。任何低于100米的物体都需要该设备为GPS芯片通电。