2014-09-02 70 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