【问题标题】:iOS: Adding data to a BLE characteristic throwing error asking for read-only characteristiciOS:将数据添加到 BLE 特征引发错误要求只读特征
【发布时间】:2015-09-24 15:09:01
【问题描述】:

我有一个 iOS BLE 服务可以做广告并且可以连接,但现在我想为外围设备添加一个特性。我想我只是在 value 属性中添加一个新的 NSData 对象来创建特性,但是每当我在外围管理器上调用 addService 时,我都会收到此错误:

2015-09-24 09:02:59.456 peripheral[459:27589] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Characteristics with cached values must be read-only'

我添加特征的方法如下:

- (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral{
    if (peripheral.state == CBPeripheralManagerStatePoweredOn) {
        _shareService = [[CBMutableService alloc] initWithType:_serviceUUID primary:YES];
        _notifyUUID = [CBUUID UUIDWithString:@"F098FDEF-B82C-43F1-8BFB-18757743BA10"];
        _notificationCharacteristic = [[CBMutableCharacteristic alloc] initWithType:_notifyUUID
                                                                         properties:CBCharacteristicPropertyNotify
                                                                              value:[@"Some Data" dataUsingEncoding:NSUTF16StringEncoding]
                                                                        permissions:CBAttributePermissionsReadable];

        [_shareService setCharacteristics:@[_notificationCharacteristic]];

        [_pMgr addService:_shareService];

        [self startAdvertising];

    }
}

虽然当我将 value 项更改为 nil 时,它再次做广告。我确信我缺少一些简单的东西,但我对 iOS 还是很陌生,所以任何帮助都会很棒。谢谢!

【问题讨论】:

    标签: ios objective-c bluetooth-lowenergy


    【解决方案1】:

    来自CBMutableCharacteristic init 方法的文档-

    value - 要缓存的特征值。如果为零,则值为 动态的,将按需请求。

    这意味着如果您在创建CBMutableCharacteristic 时指定了一个非零值,那么它是一个“缓存特征”,并且正如错误消息所述,您以后无法更改该值。在创建 CBMutableCharacteristic 时指定 nil - 您在 didReceiveReadRequest 方法中请求时提供该值。

    【讨论】:

    • 我会玩这个。仍然没有看到使用该方法返回的数据,但希望我能很快让它在这里工作。
    猜你喜欢
    • 2018-04-23
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    相关资源
    最近更新 更多