2014-09-02 4 views
0

Мне удалось получить сообщение о приложении IOS (периферийное) в мое приложение OSX (центральное).Обновление значения знака от CBCentral

У меня возникли проблемы при попытке получить значение «Значение центра» и прочитать его с периферийного устройства.

Если я изменю CBCharacteristicProperties на что-либо, кроме Notify, мой центральный не может подписаться на признак со следующей ошибкой: «Запись не разрешена».

self.transferCharacteristic = CBMutableCharacteristic(type: CBUUID.UUIDWithString(TRANSFER_CHARACTERISTIC_UUID), properties: CBCharacteristicProperties.Read, value: nil, permissions: CBAttributePermissions.Writeable) 

В моем понимании, чтобы иметь в Центральной записи в периферийных, я должен использовать комбинацию линии выше в периферийных, с этим событием:

func peripheralManager(peripheral: CBPeripheralManager!, didReceiveWriteRequests requests: [AnyObject]!) {} 

и это в Центральное значение для обновления значения признака:

self.discoveredPeripheral?.writeValue(passwordData, forCharacteristic: self.characteristicSubscribed, type: CBCharacteristicWriteType.WithoutResponse) 

Сообщите мне, что я делаю неправильно. Любой образец проекта, показывающий, как делать то, что я пытаюсь, будет высоко оценен.

Благодаря

ответ

1

Вы должны пометить свойство как и для чтения и записи путем объединения значений перечисления -

var cbProperties = CBCharacteristicProperties.Read|CBCharacteristicProperties.Write 
var cbPermissions = CBAttributePermissions.Readable|CBAttributePermissions.Writeable 

var transferCharacteristic = CBMutableCharacteristic(type: CBUUID.UUIDWithString(TRANSFER_CHARACTERISTIC_UUID), properties: cbProperties, value: nil, permissions: cbPermissions) 
+0

Два более вопросы пожалуйста. 1- При использовании такого рода характеристик я все еще должен использовать: peripheral.setNotifyValue (true, forCharacteristic: характерный как CBCharacteristic) Если это так, я все еще получаю «Письмо не разрешено». 2 - Как мне обрабатывать данные на периферийной стороне после вызова self.discoveredPeripheral? .writeValue на Central? Спасибо –

+0

Если вы хотите получить уведомление, вам нужно добавить 'CBCharacteristicProperties.Notify' в свойства. На периферийной стороне вам нужно либо опросить значение признака, либо (лучше) использовать уведомление для уведомления о том, что значение изменилось. – Paulw11

+0

Получил это работу. Мне пришлось использовать выделенный UUID для этой характеристики, так как это противоречило другому, что я использовал ранее, они, похоже, занимают много времени, чтобы «уйти». Большое спасибо !!! –