2014-01-11 4 views
1

В настоящее время я пишу приложение, которое использует BTLE для передачи небольших строк данных между двумя или более телефонами.Данные о низкой энергии Bluetooth (iBeacons)

В настоящее время на переднем плане я прохожу: CBAdvertisementDataLocalNameKey и CBAdvertisementDataServiceUUIDsKey. Я могу восстановить (через NSLog) строку, прошедшую через CBAdvertisementDataLocalNameKey, когда приложение находится на переднем плане.

Однако, когда приложение находится в фоновом режиме, CBAdvertisementDataLocalNameKey не проходит. BTLE UUID по-прежнему передается вместе с целым числом RSSI, CBAdvDataChannel и CBAdvDataIsConnectable.

После расчёта через бесконечный круг, называемый Apple Documentation, я не нашел способа передать небольшую строку, пока приложение находится в фоновом режиме. Мне кажется, что они не допустили бы BTLE в фоновом режиме, если бы не было способа передать данные.

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

Редактировать: Я должен четко указать, что библиотека, которую я пытаюсь использовать, называется Vicinity https://github.com/Instrument/Vicinity, которая использует CoreBluetooth, чтобы обойти ограничения фона CoreLocation.

ответ

1

Вы можете получить некоторую пользу из этого проекта, который позволяет устройствам обмениваться массивами строк (например, UserIds) над Bluetooth LE, даже в то время как справочная: SimpleShare

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

Надеюсь, что это поможет!

0

iBeacons не предназначены для передачи данных между двумя устройствами. Маяки BLE используются для определения текущего местоположения iDevice. чтобы идентифицировать маяк, который он транслирует рекламные данные, в котором содержится uuid (32 гексиггита), майор (4 hexdigits) и второстепенное число (4 hexdigits). это все. если вы хотите передавать данные, вам нужно использовать любую другую услугу.

+0

Все, что мне нужно, это нечто вроде основного или второстепенного значения, прошедшего в фоновом режиме. Проблема возникает, когда приложение находится в фоновом режиме. Использование CoreLocation и традиционного протокола iBeacon, как вы описали, отключено в фоновом режиме и перезапускается на переднем плане. Используя CoreBluetooth, вы все равно можете излучать маяки в фоновом режиме (протокол может быть немного другим), но он сильно ограничивает данные, которые вы можете пройти. Если вы знакомы с чем-то вроде FitBit http://www.fitbit.com/, я считаю, что они передают данные BTLE в фоновом режиме. – brettwmc

+0

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

+0

мы будем в порядке с получением основного и младшего, пока устройство находится в bg, но мы не можем даже получить это на данный момент. Нам просто нужно что-то, что угодно! что позволит нам рассказать 1 устройство от другого, которое может масштабироваться, так как у нас потенциально может быть 1000 пользователей, каждый из которых будет транслировать свой собственный уникальный идентификатор (майор/минор будет просто отлично для нас, я думаю, ЕСЛИ мы могли бы его получить) – ChuckKelly

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