Подключиться к Bluetooth-устройству из другого приложения

У меня есть приложение ("APP A"), которое подключается к устройству Bluetooth и обнаруживает все необходимые службы и характеристики. У меня есть другое приложение ("APP B"), которое попытается вызвать

 NSArray *connectedPeripheralArray = [centralManager retrieveConnectedPeripheralsWithServices:@[requiredUUID]];

и получит подключенное устройство Bluetooth (CBPeripheral) из системы iOS. Учитывая, что я ранее обнаружил все услуги и характеристики в «ПРИЛОЖЕНИИ A», нужно ли мне делать это еще раз в «ПРИЛОЖЕНИИ B», или я могу просто начать использовать услуги/характеристики по своему усмотрению?

P.S. Устройство Bluetooth подключено к системе iOS все время после подключения к «APP A».

Спасибо!


person Teddy13    schedule 19.03.2014    source источник


Ответы (1)


Да, вам нужно выполнить полное обнаружение. Я предполагаю, что ваш план состоял в том, чтобы жестко закодировать различные идентификаторы устройств в приложении B? Это будет ненадежно, так как идентификаторы могут меняться со временем.

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

person Paulw11    schedule 19.03.2014
comment
Я создаю устройство для здоровья и хочу, чтобы оно функционировало аналогично смарт-часам Pebble (если вы знаете, как оно работает). Pebble работает, подключая устройство Pebble к системе iOS в приложении Pebble. Затем сторонние приложения могут ссылаться на устройство Pebble, подключенное к системе iOS. Я пытаюсь понять, как они это сделали. Нет смысла заново открывать все сервисы заново. есть идеи? Спасибо - person Teddy13; 19.03.2014
comment
Pebble не использует Bluetooth 4.0 (Bluetooth LE) — он является партнером MFI, поэтому после сопряжения устройства с телефоном вы можете получить к нему доступ через PebbleKit для iOS — developer.getpebble.com/2/mobile-app-guide/ios-guide.html Преимущество Bluetooth LE & CoreBluetooth заключается в том, что аксессуар не требует сертификации MFI. Вы просто обнаруживаете свое устройство, используя его сервисные предложения. Процесс может работать следующим образом. Найден новый AcmeDevice - подключиться? Если пользователь говорит «да», запомните это устройство, и в следующий раз, когда вы его обнаружите, используйте его без запроса, но вам нужно сделать это в каждом приложении. - person Paulw11; 19.03.2014
comment
Если вы решите пойти по маршруту MFI, вы получите доступ к различным API, которые позволяют вам общаться с вашим устройством. - person Paulw11; 19.03.2014
comment
Спасибо, Пол. Это информация, которую я искал. Я приму ваш ответ. Просто для ясности: насколько я понимаю, если я разрабатываю только с использованием Bluetooth LE, я не могу пойти по маршруту MFI. это верно? - person Teddy13; 19.03.2014
comment
Я не думаю, что вы не можете, просто вам это не нужно. MFI требует затрат и усилий, но до BLE и CoreBluetooth это был единственный способ получить периферийное устройство для связи с устройством iOS. Ничто не мешает вам предоставить библиотеку, обертывающую CoreBluetooth, чтобы упростить обнаружение и связь с вашим устройством — на самом деле, если вы хотите создать экосистему для разработчиков, это хорошая идея. Вы даже можете предложить веб-сервис или облачный сервис, в котором люди могут регистрировать свои устройства, а затем ваша библиотека может запросить это, чтобы найти известные устройства пользователя. - person Paulw11; 19.03.2014
comment
Исправление — в соответствии с часто задаваемыми вопросами MFI, если вы используете только BLE, MFI не распространяется — mfi.apple.com/MFiWeb/getFAQ.action#1-1 - person Paulw11; 19.03.2014