Методы наиболее успешной практики для установки Вашего локального устройства как периферийное устройство

Как со многими транзакциями центральной стороны, Ядро платформа Bluetooth дают Вам контроль над реализацией большинства аспектов периферийной роли. Эта глава обеспечивает инструкции и методы наиболее успешной практики для использования этого уровня управления ответственным способом.

Распространение соображений

Рекламные периферийные данные являются важной частью установки Вашего локального устройства для реализации периферийной роли. Следующие разделы помогают Вам при этом надлежащим способом.

Уважайте пределы распространения данных

Вы распространяете данные своего периферийного устройства путем передачи в словаре рекламных данных к startAdvertising: метод CBPeripheralManager класс, как описано в Распространении Ваших Служб. Когда Вы создаете рекламный словарь, имеете в виду, что существуют пределы тому, что, а также сколько, можно распространить.

Несмотря на то, что рекламные пакеты в целом могут содержать множество информации о периферийном устройстве, можно распространить только локальное имя устройства и UUIDs любых служб, которые Вы хотите распространить. Т.е. при создании рекламного словаря можно указать только следующие два ключа: CBAdvertisementDataLocalNameKey и CBAdvertisementDataServiceUUIDsKey. Вы получаете ошибку при указании каких-либо других ключей.

Существуют также пределы относительно того, сколько пространства можно использовать когда рекламные данные. Когда Ваше приложение находится на переднем плане, оно может использовать до 28 байтов пространства в начальных данных рекламы для любой комбинации двух поддерживаемых рекламных ключей данных. Если это пространство израсходовано, существуют дополнительные 10 байтов пространства в ответе сканирования, который может использоваться только для локального имени. Любая служба UUIDs, которые не помещаются в выделенное пространство, добавляется к специальной области «переполнения»; они могут быть обнаружены только устройством на iOS, явно сканирующим для них. В то время как Ваше приложение в фоновом режиме, локальное имя не распространено, и вся служба UUIDs место в области переполнения.

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

Распространите данные только, когда Вы должны будете

Так как рекламные периферийные данные используют радио Вашего локального устройства (и таким образом батарея Вашего устройства), распространитесь только, когда Вы хотите, чтобы другие устройства соединились с Вами. После того, как соединенный, эти устройства могут исследовать и взаимодействовать данные периферийного устройства непосредственно без потребности в любых рекламных пакетах. Поэтому, чтобы минимизировать радио-использование, производительность приложения увеличения, и сохранить батарею Вашего устройства, прекращает распространяться, когда больше не необходимо упростить, любой предназначил низкоэнергетическую транзакцию Bluetooth. Чтобы прекратить распространяться на Вашем локальном периферийном устройстве, просто вызовите stopAdvertising метод CBPeripheralManager класс, как это:

    [myPeripheralManager stopAdvertising];

Позвольте пользователю решить, когда распространиться

Знание, когда распространиться, часто является чем-то, что только пользователь может знать. Например, это не целесообразно иметь Ваше приложение, распространяют службы на Ваше устройство, когда Вы знаете, что поблизости нет никаких других низкоэнергетических устройств Bluetooth. Так как Ваше приложение часто не знает о том, что другие устройства являются соседними, обеспечьте в пользовательском интерфейсе (UI) своего приложения способ для пользователя решить, когда распространиться.

Конфигурирование Ваших характеристик

При создании непостоянной характеристики Вы устанавливаете ее свойства, значение и полномочия. Эти настройки определяют, как связанный centrals доступ и взаимодействует со значением характеристики. Несмотря на то, что можно решить сконфигурировать свойства и полномочия характеристик по-другому на основе потребностей приложения, следующие разделы обеспечивают некоторое руководство, когда необходимо выполнить следующие две задачи:

Сконфигурируйте свои характеристики для поддержки уведомлений

Как описано в Подписываются на Характеристические значения, Которые Изменение Часто, рекомендуется, чтобы centrals часто подписывали на характеристические значения (службы удаленного периферийного устройства) то изменение. Когда возможно, мотивируйте эту практику путем разрешения, соединил centrals для подписки на значения характеристик.

Когда Вы создаете непостоянную характеристику, конфигурируете ее для поддержки подписок путем установки свойств характеристики с CBCharacteristicPropertyNotify постоянный, как это:

    myCharacteristic = [[CBMutableCharacteristic alloc]
        initWithType:myCharacteristicUUID
        properties:CBCharacteristicPropertyRead | CBCharacteristicPropertyNotify
        value:nil permissions:CBAttributePermissionsReadable];

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

Потребуйте парного соединения с уязвимыми данными доступа

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

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

    emailCharacteristic = [[CBMutableCharacteristic alloc]
        initWithType:emailCharacteristicUUID
        properties:CBCharacteristicPropertyRead
        | CBCharacteristicPropertyNotifyEncryptionRequired
        value:nil permissions:CBAttributePermissionsReadEncryptionRequired];

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

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

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