gpt4 book ai didi

ios - 在核心蓝牙框架中创建可写特性的问题

转载 作者:搜寻专家 更新时间:2023-10-31 08:18:58 26 4
gpt4 key购买 nike

我是核心蓝牙框架的新手。我正在开发一个充当外围设备的应用程序。我需要应用程序将特征值通知订阅的中心,并通过连接的中心写入特征值。我在创建特性时设置特性的值。问题是当我设置特性的属性以通知或写入它时显示错误“具有缓存值的特性必须是只读的”。谁能帮帮我?

 var charValue = characteristicDetail["value"] as String
var charProperties:CBCharacteristicProperties = getProperty(characteristicDetail["properties"] as String )
let data = charValue.dataUsingEncoding(NSUTF8StringEncoding)
var characteristic = CBMutableCharacteristic(type: charId, properties: charProperties, value: data, permissions: CBAttributePermissions.Readable)



func getProperty(string:String) -> CBCharacteristicProperties
{
var propertyString:CBCharacteristicProperties?
switch string{
case "r","R":
propertyString = CBCharacteristicProperties.Read
case "w","W":
propertyString = CBCharacteristicProperties.Write
case "n","N":
propertyString = CBCharacteristicProperties.Notify
case "i","I":
propertyString = CBCharacteristicProperties.Indicate
case "rw","wr","WR","RW":
propertyString = CBCharacteristicProperties.Read|CBCharacteristicProperties.Write
case "rn","nr","NR","RN":
propertyString = CBCharacteristicProperties.Read|CBCharacteristicProperties.Notify
case "wn","nw","NW","WN":
propertyString = CBCharacteristicProperties.Write|CBCharacteristicProperties.Notify
default:
propertyString = CBCharacteristicProperties.Read
}
return propertyString!

}

最佳答案

如果您在创建 CBMutableCharacteristic 时指定了一个非 nil value,那么它就是一个“缓存特征”,正如错误消息所说,您不能更改该值稍后。

来自 CBMutableCharacteristic init 方法的文档 -

value - The characteristic value to be cached. If nil, the value is dynamic and will be requested on demand.

在创建 CBMutableCharacteristic 时指定 nil - 在 didReceiveReadRequest CBPeripheralManagerDelegate 方法中请求时提供值.

如果您有订阅该特征的中心,那么只要值发生变化,您还应该在 CBPeripheralManager 上调用 updateValue

请务必阅读 Core Bluetooth Programming Guide 中的执行常见外设角色任务部分

关于ios - 在核心蓝牙框架中创建可写特性的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29228244/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com