0

我有 2 个应用程序(1 个是在后台注册和扫描 iBeacons,没有测距),另一个没有。除了第一个为 iBeacons 启用之外,这两个应用程序本质上相似。

// location manager config
    + (CLLocationManager *)sharedLocationManager {
static CLLocationManager *_locationManager;

@synchronized(self) {
    if (_locationManager == nil) {
        _locationManager = [[CLLocationManager alloc] init];
    //_locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
        _locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers;
        _locationManager.pausesLocationUpdatesAutomatically = NO;
        if ([_locationManager respondsToSelector:@selector(allowsBackgroundLocationUpdates)]){
            _locationManager.allowsBackgroundLocationUpdates = YES;
        }
    }
}
return _locationManager;
}

    - (void)startMonitoringItem:(Item *)item {
    CLBeaconRegion *beaconRegion = [self beaconRegionWithItem:item];
    CLLocationManager *locationManager = [LocationTracker sharedLocationManager];
    [locationManager startMonitoringForRegion:beaconRegion];
}

- (void)stopMonitoringItem:(Item *)item {
    CLBeaconRegion *beaconRegion = [self beaconRegionWithItem:item];
    CLLocationManager *locationManager = [LocationTracker sharedLocationManager];
    [locationManager stopMonitoringForRegion:beaconRegion];
}

我在第一个应用程序中注册了大约 100 个 iBeacons,并在 iPhone 6 和 iPhone 6 Plus 上运行了这两个应用程序,在这 100 个 iBeacons 附近运行相同的操作系统版本,都启用了蓝牙。

我只对进入和退出事件感兴趣,基本上只是在第一个应用程序中实现了这两个调用。我运行了大约 14 个小时的测试,只需将启用蓝牙的两部 iPhone 放在 iBeacons 附近即可。

当我在设置菜单中检查电池状态时,第一个应用程序消耗的电池最多比第二个应用程序多 1%(例如:第一个应用程序:25%,第二个应用程序:24%),这在两个设备上都是相同的。这是预期行为,因为应优化由 iOS 控制的蓝牙扫描算法以节省电池电量。

但是,在我客户的设备上,第一个应用程序消耗的电量是第二个应用程序的 5 倍(例如:第一个应用程序:10%,第二个应用程序:2%)。

当我检查他的蓝牙设置时,我意识到他的 iPhone 与大约 8 台其他设备配对。

所以我的问题是这个。与其他设备配对是否会在我的第一个应用程序上导致更大的电池消耗,即使它只是在扫描 iBeacons?如果是,有什么方法可以通过算法优化以忽略配对设备并仅扫描 iBeacons。

我已经广泛阅读了 iOS 文档并咨询了 stackoverflow,但到目前为止还没有找到令人满意的答案。

我将不胜感激任何建议!

更新:请看截图示例

电池消耗百分比

在上面的屏幕截图中,第一个和第二个应用程序的电池使用百分比在我的设备上几乎相同。但是,在我客户的设备(与其他 8 台设备配对)上,过去 24 小时和过去 ​​7 天,第一个应用程序的电池使用百分比通常是第二个应用程序的 5 倍(例如:10% 到 2%) . 这两个应用程序在他的设备上运行的时间大致相同。这不是第一次发生。

4

1 回答 1

1

是的,蓝牙配对,尤其是经典蓝牙,将比在 iOS 上在后台扫描信标消耗更多的电量。

对于在您的应用程序之外完成的配对,您无能为力。 Apple 的 iOS 沙盒应用程序,因此它们不会影响一般系统设置(例如打开或关闭蓝牙,或用于网络共享和扬声器之类的蓝牙配对)或其他应用程序的行为(例如那些可能与蓝牙设备配对以实现应用程序特定目的的应用程序。 )

底线是您描述的电池使用量不是由您的应用程序的信标扫描引起的。它是由配对引起的。如果您从客户端的设备上卸载第一个应用程序,则设备会以与根本未安装您的应用程序类似的速度耗尽电池电量。

于 2015-12-05T18:39:32.677 回答