Отслеживание движущегося устройства с помощью BTLE

Я ищу способ отслеживать другое устройство iOS с поддержкой BTLE, используя мое, находясь в пределах досягаемости. По сути, одно устройство должно будет регистрировать информацию о геолокации, а затем периодически отправлять ее на другое устройство, используя BTLE.

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

Если это невозможно с помощью встроенной платформы Apple, знаете ли вы какие-либо внешние, которые позволили бы это сделать?


person NeonBlueHair    schedule 12.03.2013    source источник
comment
Посмотрите на от Apple. Пример BTLE Central Peripheral Transfer, показывающий, как передавать данные через LE между двумя устройствами iOS (однако требуется iOS 6.0). Все, что вам нужно, это создать собственный профиль для передачи координат вашего местоположения в качестве атрибутов.   -  person Brad Larson    schedule 13.03.2013
comment
Вы знаете, как работает BLE? Если нет, то я бы сказал так: Играйте на двух iDevice с приложением LightBlue (приложение в AppStore, которое могло бы заменить термометр). Затем используйте датчик температуры (образец от Apple) в сочетании с LightBlue. Как только вы поймете, как работает BLE, вы сможете узнать о предыдущем образце, предоставленном Брэдом. Когда я говорю «играть», это не означает, что вам не нужно просматривать документацию BLE и документацию Apple по CoreBluetooth.framework, но вы можете протестировать.   -  person Larme    schedule 13.03.2013


Ответы (1)


Длинная, длинная, длинная, длинная история короче, но вот:

На одном устройстве iOS используйте как CBCentralManager, так и CBPeripheralManager. CBCentralManager отвечает за подключение к внешним периферийным устройствам и поддержание этого подключения. CBPeripheralManager будет тем, что вы будете использовать для чтения/записи с устройства iOS, на котором вы используете периферийное устройство.

На другом устройстве iOS используйте только CBPeripheralManager. Вам потребуется добавить в CBPeripheralManager все услуги и характеристики, указанные в профиле GATT. Посетите сайт developer.bluetooth.org. Эти службы и характеристики необходимы для подключения одного устройства к другому.

В дополнение к просто характеристикам и услугам gatt вам нужно будет добавить пользовательскую услугу с характеристикой, в которой вы храните данные о своем местоположении.

Ознакомьтесь с документами, но, в частности, для CBPeripheralManager вам нужно будет использовать

-(void) peripheralManager:(BLEPeripheralManager*)mgr requiresResponseToWriteRequests:(NSArray*)requests;

а также

-(void) peripheralManager:(BLEPeripheralManager*)mgr requiresResponseToReadRequest:(CBATTRequest*)request;

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

person Tommy Devoy    schedule 13.03.2013
comment
Короткий, но весьма полезный. Пока мы не закончим, я не буду знать, будет ли это работать именно так, как я хочу, но такой план — это то, что мне было нужно. Спасибо! - person NeonBlueHair; 15.03.2013
comment
Итак, я работаю над этим сейчас, но, похоже, есть проблема. Возможно ли, чтобы оба устройства могли отправлять и получать данные друг другу в одном и том же соединении? Прямо сейчас кажется, что только один должен транслировать, а другой подписывается для получения данных. Я хочу, чтобы они оба могли отслеживать друг друга одновременно. Или мне нужно сделать это, быстро обновив соединение и изменив статус центрального/периферийного устройств? - person NeonBlueHair; 04.04.2013
comment
О, подождите, я забыл ваш вопрос.. Итак, вы хотите, чтобы оба могли записывать координаты местоположения друг другу? - person Tommy Devoy; 04.04.2013
comment
Да! Как вы думаете, это выполнимо? - person NeonBlueHair; 05.04.2013
comment
Кстати, я с радостью дам вам очки репутации/баунти, если вас это волнует. - person NeonBlueHair; 05.04.2013
comment
хаха да, это 100% выполнимо. Я сейчас занят, но я напишу комментарий позже, чтобы дать вам подсказки - person Tommy Devoy; 08.04.2013