2014-09-18 5 views
3

В настоящее время я создаю простое приложение для iOS bluetooth. В настоящее время у меня есть устройство с возможностью изменения имени. Я нахожу, что когда я подключаюсь к CBPeripheral device, он, похоже, кэширует имя старого устройства.Изменение имени устройства CoreBluetooth

  1. Подключение к устройству через мое приложение.
  2. Отключиться от устройства через мое приложение.
  3. Измените название устройства.
  4. Заново открыть/подключиться к устройству через мое приложение (с существующим CBPeripheral object).

Следуя приведенной выше процедуре, я ожидал, что приложение iOS обнаружит новое имя устройства. Тем не менее, я нахожу, что у него есть тенденция удерживать старое имя вместо этого. Дважды отключившись от устройства CBPeripheral, я обнаружил, что могу получить новое имя.

Итак, мой вопрос: есть ли способ обновить или очистить существующие обнаруженные характеристики CBPeripheral (или вновь открывать новые характеристики каждый раз), чтобы получить последнее имя устройства?

Вот аналогичный вопрос: CoreBluetooth: Refreshing local name of an already discovered Peripheral

ответ

11

У меня была аналогичная проблема, к тому же это не проблема только с именем устройства, но некоторые characterstics изменены в определенных режимах (например, обновления программного обеспечения на устройстве).

получил следующий ответ от Apple:
«Ответ в том, что аксессуар должен поддерживать ГАТТ служба Изменено характеристика - пожалуйста, прочитайте specification, в частности, Том 3, часть G, 2.5.2, и Том 3, Часть G, 7.1. "

Проблема с именем была разрешена путем объявления названия устройства в качестве свойства в рекламных данных. (Это, однако, может потребоваться специальная прошивку, так как не всегда есть, что свойство в пакете ADV)

В противном случае сбросить кэш ядра-Bluetooth: вам нужно будет повторно запустить через Bluetooth адаптер IOS, который я не мог 't управлять программно на iOS.

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