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];
我正在尝试获取从 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];