iOS React to iBeacon enter event с отправкой собственного сигнала iBeacon

Я разрабатываю приложение для iOS, использующее iBeacons. Я понимаю, что мое приложение может просыпаться в фоновом режиме при запуске события ввода (когда iPhone обнаруживает iBeacon с определенным UUID). Могу ли я использовать это, чтобы сам отправить сигнал маяка? (Все пока телефон заблокирован)

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

Любая помощь высоко ценится. Заранее спасибо.


person Philipp    schedule 12.07.2017    source источник


Ответы (1)


К сожалению, устройство iOS не может отправлять стандартную передачу iBeacon в фоновом режиме. Хотя вы можете выполнить код для этого, и iOS будет передавать, фоновые передачи не будут обнаруживаться как iBeacons другими устройствами.

Почему? CoreBluetooth использует запатентованную технику для объединения всех рекламных объявлений Bluetooth фоновых приложений в одну рекламу. Это разработано для работы с рекламными сервисами Gatt и имеет побочный эффект взлома формата iBeacon.

person davidgyoung    schedule 12.07.2017
comment
Хорошо, спасибо за ответ. Из вашего ответа я понимаю, что можно отправить что-то через Bluetooth, даже если это не будет в формате iBeacon. Это будет означать, что я все равно смогу обнаружить это сообщение, верно? - person Philipp; 12.07.2017
comment
Да, вы можете обнаружить это сообщение с помощью CoreBluetooth. Но я не думаю, что вы найдете его очень полезным, поскольку он не будет содержать никакой информации, которую вы могли бы использовать, чтобы идентифицировать его как поступающий с другого телефона. См. Мой ответ здесь: stackoverflow.com/a/34225768/1461050 - person davidgyoung; 12.07.2017
comment
На самом деле я планировал обнаружить ответ с телефона с помощью Raspberry Pi. Так можно ли было бы отправить обратно сообщение, содержащее какой-то идентификатор, а затем какую-то полезную нагрузку, и понять это с помощью Pi? (например, 1234567890 - «Понятно»). Все это было бы способом обойти необходимость фактического соединения телефона и малины, потому что я думаю, что это невозможно, пока телефон остается в кармане. Пожалуйста, поправьте меня, если это неверно или у вас есть идеи, как этого добиться. Большое тебе спасибо - person Philipp; 12.07.2017
comment
Хорошее решение для этого - использовать настраиваемую структуру фоновой рекламы маяка, предоставленную этими ребятами: github.com/De Decemberlabs/ AltBeacon Это не стандартный iBeacon (или даже формат AltBeacon с открытым исходным кодом, несмотря на использование того же имени), но это формат, который вы должны иметь возможность передавать в фоновом режиме и обнаруживать на другом устройстве, таком как Raspberry Pi. - person davidgyoung; 12.07.2017