2014-09-27 4 views
1

Я разрабатываю устройство Bluetooth Low Energy (4.0), которое работает с приложением iOS и использует CoreBluetooth. Я успешно создал это приложение, и он прекрасно взаимодействует с устройством. Однако теперь, когда iOS 8 позволяет разработчикам реализовывать пользовательские виджеты, я хочу отобразить кнопку «Отключить» в Центре UINotification «Сегодня».Отключить устройство Bluetooth через iOS 8 Widget

Проблема заключается в следующем: я считаю, что я прочитал, что нет никакого способа связи между виджетами и приложением, что означает, что у виджета есть собственный контейнер. Это также означает, что я не могу получить доступ к объекту Bluetooth в приложении, которое держит ссылку на мое устройство Bluetooth из самого виджета, чтобы отключить объект. Я могу создать новый объект Bluetooth внутри класса виджета и получить соединение Bluetooth с системой iOS, но даже я отключил устройство BT в данный момент, он все равно будет содержать ссылку внутри приложения.

Может ли кто-нибудь предложить какое-либо представление о том, что я пытаюсь сделать, возможно?

+0

Виджет имеет не только собственный контейнер, но и полностью отдельный процесс. –

+0

Другим вариантом было бы общение с приложением через соединение BLE. –

ответ

1

Вы можете использовать shared NSUserDefaults database для передачи данных между вашим приложением и добавочным номером. Вы также можете быть заинтересованы в NSUserDefaults key value observing.

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

Однако другой вариант заключается в том, чтобы реализовать custom URL scheme для вашего приложения, а затем использовать openURL, чтобы открыть ваше приложение и выполнить действие отключения (или что-нибудь еще, что вам нужно сделать для расширения).

+0

Спасибо за эти предложения, я очень ценю это. Кажется, что ваша настраиваемая схема URL-адресов может быть способом. Тем не менее, я заинтригован вашим предложением наблюдения за ключевыми значениями NSUserDefaults. Как это будет работать, так как виджет и приложение существенно независимы друг от друга? Будет ли приложение через виджет по-прежнему получать уведомление таким образом? Благодаря! – Teddy13

+1

@ Teddy13 Я действительно не уверен, что наблюдение за ключевыми значениями будет работать с режимами bluetooth или нет. Тем не менее, вы, конечно же, можете использовать 'NSUserDefaults' в своих реализациях метода делегата' CoreBluetooth', чтобы хотя бы проверить, «пользователь попросил отключить» через виджет. –

+1

@ Teddy13 Но вы правы - пользовательские схемы URL-адресов, вероятно, подходят. Просто нет отличного способа делать какие-либо сообщения на основе событий между расширением и содержащим приложение. –

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