2014-09-02 65 views
0

我已成功设法让我的iOS应用(外设)向我的OSX应用(中央)发送消息。更新来自CBCentral的特征值

我现在遇到问题,试图让中央更新特征值并从外设读取它。

如果我将CBCharacteristicProperties更改为Notify以外的任何其他内容,我的中央服务器无法订阅具有以下错误的特征:“不允许写入”。在

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

这:

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

据我了解,才能有中央写入外设,我应该用线的组合在上面的外围,与此事件中央更新特征值:

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之后处理外设端数据? 谢谢 – 2014-09-02 22:52:47

+0

如果你想通知,那么你需要添加'CBCharacteristicProperties.Notify'属性。在外设方面,您需要轮询特征值或(更好地)使用通知来通知该值已更改。 – Paulw11 2014-09-02 22:58:35

+0

得到它的工作我不得不使用专用的UUID来处理这个特性,因为它与我以前使用过的另一个冲突,他们似乎需要很长时间才能“走开”。 非常感谢! – 2014-09-02 23:05:24