iPhone: сопряженные устройства в сравнении с расходом батареи Bluetooth iBeacon

У меня есть 2 приложения (1, которое регистрирует и сканирует iBeacons в фоновом режиме, без ранжирования), а другое - без. Оба эти приложения в основном похожи, за исключением того, что 1st включен для 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 iBeacon с поддержкой "голубого зуба".

Меня интересуют только события входа и выхода, и, по сути, я просто реализовал оба этих вызова в первом приложении. Я проводил тесты около 14 часов, просто оставив оба айфона с включенным Bluetooth в непосредственной близости от iBeacons.

Когда я проверил состояние своей батареи в меню настроек, 1-е приложение потребляло на 1% больше энергии, чем 2-е приложение (например, 1-е приложение: 25%, 2-е приложение: 24%), что одинаково для обоих устройств. Это ожидаемое поведение, поскольку алгоритм сканирования "голубого зуба", управляемый iOS, должен быть оптимизирован для сохранения заряда батареи.

Однако на устройстве моего клиента первое приложение потребляет в 5 раз больше батареи, чем второе (например, первое приложение: 10%, второе приложение: 2%).

Когда я проверил его настройки Bluetooth, я понял, что его iPhone в паре с 8 другими устройствами.

Итак, мой вопрос заключается в следующем. Будет ли сопряжение с другими устройствами вызывать гораздо большую разрядку батареи в моем первом приложении, даже если оно просто сканирует iBeacons? Если да, есть ли способ оптимизировать алгоритм, чтобы игнорировать сопряженные устройства и просто сканировать iBeacons.

Я много читал документацию по iOS и консультировался с stackru, но пока не нашел удовлетворительного ответа.

Буду очень признателен за любые советы!

Обновление: пожалуйста, смотрите скриншот для примера

Процент потребления батареи

На приведенном выше снимке экрана процент использования батареи 1-го и 2-го приложения практически одинаков на моем устройстве. Однако на устройстве моего клиента (которое сопряжено с 8 другими устройствами) первое приложение обычно в 5 раз превышало процент использования батареи второго приложения (например, от 10% до 2%) как в течение последних 24 часов, так и в течение последних 7 дней., Оба приложения работали на своем устройстве примерно одинаковое количество времени. Это не первый раз, когда это произошло.

1 ответ

Решение

Да, сопряжение Bluetooth, особенно классическое Bluetooth , потребляет гораздо больше заряда аккумулятора, чем сканирование маяков в фоновом режиме на iOS.

Вы ничего не можете сделать с сопряжением, которое выполняется за пределами вашего приложения. Приложения Apple для песочницы iOS не влияют на общие настройки системы (например, включение или выключение Bluetooth или сопряжение Bluetooth для таких вещей, как модем и динамики) или поведение других приложений (например, тех, которые могут связываться с устройствами Bluetooth для конкретных приложений).)

Суть в том, что описанное вами использование батареи не вызвано сканированием маяка вашего приложения. Это вызвано спариванием. Если вы удалите 1-е приложение с устройства вашего клиента, устройство должно разряжать аккумулятор с такой же скоростью, как если бы ваше приложение вообще не было установлено.

Другие вопросы по тегам