2016-01-01 3 views
1

Я хочу, чтобы мое приложение либо подключалось, либо пыталось подключиться к известному периферийному устройству, полученному с помощью -retrievePeripheralsWithIdentifiers или -retrieveConnectedPeripheralsWithServices. Когда периферийное устройство отключается, необходимо выполнить повторное соединение. Таким образом, приложение получает уведомления от периферийного устройства и предоставляет локальные push-уведомления. Это отлично работает, когда приложение находится на переднем плане или на заднем плане и все еще работает.Повторное подключение CoreBluetooth в фоновом режиме

В фоновом режиме, если приложение по какой-либо причине убито (пользователь закрывает, память низка), система отключает периферийное устройство, но приложение не получает уведомления об отключении, поэтому не может автоматически подключаться, чтобы продолжать получать уведомления. Как я могу попытаться повторно подключиться, когда приложение перестанет работать?

ответ

1
  1. Включить Bluetooth-центральный фоновый режим

  2. Используйте параметр CBCentralManagerOptionRestoreIdentifierKey подачи уникальный идентификатор при создании экземпляра CBCentralManager

  3. Реализовать - (Недействительными) centralManager: (CBCentralManager *) центральный willRestoreState : (NSDictionary *) метод делегирования состояний.

3,1 Получить массив восстанавливаемых периферийных устройств с помощью NSArray * периферийные = состояние [CBCentralManagerRestoredStatePeripheralsKey]

3,2 Вызвать метод connectPeripheral вашего CBCentralManager подачи каждый периферийный для восстановления

Примечание: - Подробнее о подробности в Руководстве по программированию ядра Bluetooth

+0

Я уже сделал все это, но проблема в том, что приложение было закрыто и не уведомлено о том, что периферийное устройство отключено, поэтому процесс не запускается снова для повторного инициирования соединения – Nick

+1

Вы имеете в виду, что использование убило приложение в коммутаторе задач? Потому что в этом случае приложение не будет автоматически перезапущено. –