iOS: 没有收到 Central 到 Peripheral 的写请求

iOS: Not receiving the write requests from Central to Peripheral

我正在尝试获取从 Central 发送的写入请求,但在 Peripheral 中没有调用任何委托。如果我从 Central 取消订阅特征,则会调用 didUnsubscribeFromCharacteristic。我不确定如何在外围应用程序中获取请求。

中心代码:

[peripheral writeValue:data forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse];

尝试用 type:CBCharacteristicWriteWithoutResponse 调用相同的方法,但没有按预期工作。

我们将不胜感激。

提前致谢!

我认为在 Peripheral 中你应该调用 didReceiveWriteRequests 委托。

你是如何在外设中初始化你的特性的?查看他们的属性,你需要:

properties: CBCharacteristicPropertyWrite
permissions: CBAttributePermissionWriteable

调用了哪些 PeripheralManager 委托方法? 必须不仅仅是 peripheralManager:central:didUnsubscribeFromCharacteristic

peripheralManagerDidUpdateState
peripheralManager:didAddService:error
peripheralManagerDidStartAdvertising:error
...

查看 CBPeripheralManagerDelegate.... 检查是否所有这些都被调用以及错误。也许你的 services/characteristics 有问题...

并检查您的中心方法是否也被调用。例如

- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service
             error:(NSError *)error

当然,您必须使用正确的委托在外围设备中初始化 peripheralManager(并实现所有其他需要的委托方法):

self.peripheralManager  = [[CBPeripheralManager alloc] initWithDelegate:self queue:nil options:nil];