我正在尝试让我的中央(iOS 设备)与两个外围设备(一个 iOS 设备,一个不)进行通信。它们单独工作正常,但我发现一旦我参与了两个外围设备,只有最近连接到的外围设备能够从中央设备接收数据。有没有办法在不断开和重新连接外围设备的情况下将数据从中央设备发送到每个外围设备?
这是我写入外围设备的代码:
- (void) peripheral: (CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBChatacteristic *)characteristic error:(NSError *)error{
NSString *newValue = [[NSString alloc] initWithData:characteristic.value encoding:NSUTF8StringEncoding];
NSLog(@"Received: %@ from %@", newValue, peripheral.name);
CBPeripheral *sender = peripheral;
if([newValue isEqualToString:@"ready"]){
NSData *messageValue = [@"challenge dataUsingNSUTF8StringEncoding];
[sender writeValue:messageValue forCharacteristic:_writeCharacteristic type:CBCharacteristicWriteWithResponse];
NSLog(@"Challenge sent to %@", sender.name);
}
断点表示代码正在执行,日志显示“挑战已发送”到正确的外围设备,只是外围设备从未收到它。
外围接收代码:
-(void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray<CBATTRequest *> *) requests{
for(int i=0; i<requests.count; i++){
CBATTRequest *request = requests[i];
if([request.characteristic.UUID isEqual:_writeCharacteristic.UUID]){
NSString *stringValue = [[NSString alloc] initWithData:request.value encoding:NSASCIIStringEncoding];
NSLog(@"Write Request: %@", stringValue);
}
}