2012-05-31 7 views
3

При использовании каркаса CoreBluetooth для доступа к устройствам с низкой энергией Bluetooth CBCentralManager возвращает CBPeripheral для периферийных устройств.Несколько CBPeripheral для того же устройства

Множественные службы доступны на периферии, и я хотел бы разделить код, который обрабатывает обновления значений признаков для разных служб в несколько классов. Поэтому мне нужно было бы подключить к периферии несколько делегатов id<CBPeripheralDelegate>. Однако это невозможно, потому что поддерживается только один делегат.

  • Есть ли способ, чтобы получить несколько экземпляров CBPeripheral для того же периферийное?

    Если возможно, что несколько приложений получают доступ к одному и тому же периферийному устройству, получают ли они разные экземпляры CBPeripheral? Если да, видят ли они обновления из другого приложения? (Скажем, приложение А записывает значение признака, делает делегат приложения B также получить? [- периферийная: didWriteValueForCharacteristic: ошибку:] сообщение)

  • Есть ли элегантные подходы для поддержки разбиения коды обработки на событие несколько классов?

ответ

4

answer для CoreBluetooth: How to design code for many characteristics (30 - 40)? имеет некоторые конструктивные советы, которые могут быть полезны здесь. Короче говоря, создайте посреднический класс, который может быть CBPeripheralDelegate и поддерживает несколько характерных классов, регистрирующихся по любой желаемой характеристике.

Смежные вопросы