2013-01-04 59 views
19

我实现的iOS客户端CoreBluetooth服务器&用于发送数据如何正确实现didReceiveWriteRequests? iOS6的CoreBluetooth

client site 
[self.connectedPeripheral writeValue:mainData forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse]; 

- (void)peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic 
{ 
    NSString *s= [[NSString alloc] initWithData:characteristic.value encoding:NSUTF8StringEncoding]; 
    NSLog(@"didWriteValue characteristic.value: %@ ", s); 
} 

和服务器站点

- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests 
{ 
    NSData *res= [[NSString stringWithFormat:@"Hello"] dataUsingEncoding:NSUTF8StringEncoding]; 
[self.peripheral updateValue:res 
         forCharacteristic:self.writeCharacteristic 
        onSubscribedCentrals:nil]; 
[peripheral respondToRequest:aReq withResult:CBATTErrorSuccess]; 
} 

但是,客户端无法接收任何数据。 有什么想法? 感谢您的帮助。

+1

你发现任何回答您的问题?我也有同样的问题 :( – eter

回答

-2

要使用:

- (BOOL)updateValue:(NSData *)value forCharacteristic:(CBMutableCharacteristic *)characteristic onSubscribedCentrals:(NSArray *)centrals; 

首先需要使用

- (void)setNotifyValue:(BOOL)enabled forCharacteristic:(CBCharacteristic *)characteristic; 

从客户端订阅它。

2

根据苹果的CoreBluetooth文档,你应该使用:

- (void)respondToRequest:(CBATTRequest *)request withResult:(CBATTError)result; 

回复的central.This也是一种选择,当你收到读请求