IOS coreBluetooth Уведомление о фоновом режиме

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

Для фонового режима я использовал этот код

[centralManager connectPeripheral:activePeripheral options:@{CBConnectPeripheralOptionNotifyOnConnectionKey: @YES,
    CBConnectPeripheralOptionNotifyOnDisconnectionKey: @YES,
    CBConnectPeripheralOptionNotifyOnNotificationKey: @YES}];

он отлично работает как для событий, так и для фона сеанса.

Фоновое оповещение о событии отображается для каждого уведомления. Есть ли способ скрыть оповещение для каждого только необходимого показа уведомлений.

Спасибо


person Ganesh    schedule 03.09.2013    source источник
comment
Я думаю, что могу помочь вам, но только если вы сможете лучше сформулировать свой вопрос. Я действительно не понимаю, в чем ваша проблема, чего вы пытаетесь достичь и каково текущее состояние вашего приложения. Попробуйте отредактировать свой вопрос и более четко предоставить дополнительную информацию. Ваше здоровье   -  person Dan1one    schedule 03.09.2013


Ответы (1)


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

В режиме сеанса приложение остается ответственным за обработку всех этих событий. Он получает все обратные вызовы так же, как и на переднем плане. Если вы хотите свести к минимуму беспокойство пользователя, вам следует взять на себя генерацию предупреждений в этом режиме.

person allprog    schedule 03.09.2013
comment
Когда устройство находится в режиме сеанса, есть ли определенное время, в течение которого оно может оставаться активным? Как он узнает, что нужно переподключиться и начать общение в фоновом режиме? - person d2burke; 12.12.2013
comment
Ваше приложение получит обратный вызов и получит около 8 секунд на каждое событие BLE (подключение, отключение, обнаружение, уведомления и т. д.), но иначе оно не может работать. В противном случае он должен оставаться приостановленным. Но нет возможности разбудить приложение в нужное время. Это могут сделать только события BLE, сгенерированные подключенным узлом. - person allprog; 13.12.2013
comment
@allprog 8-секундная часть очень интересна нам... откуда вы взяли это число? Есть официальные документы? - person abbood; 24.08.2015
comment
хорошо, получил это из документов Apple: Upon being woken up, an app has around 10 seconds to complete a task. Ideally, it should complete the task as fast as possible and allow itself to be suspended again. Apps that spend too much time executing in the background can be throttled back by the system or killed. - person abbood; 24.08.2015