当我发现一个CBPeripheral的服务时,我打电话discoverCharacteristics
一次全部我正在寻找的特性;
for (CBService *service in peripheral.services)
{
DDLogInfo(@"Kicking discovery of characteristics for servive %@", service);
[peripheral discoverCharacteristics:@[[CBUUID UUIDWithString:CHARACTERISTIC_A],
[CBUUID UUIDWithString:CHARACTERISTIC_B],
[CBUUID UUIDWithString:CHARACTERISTIC_C],
[CBUUID UUIDWithString:CHARACTERISTIC_D]]
forService:service];
}
然后,在didDiscoverCharacteristicsForService:error:
,我遍历发现结果和存储引用到我需要后来的特点,就是这样。
for (CBCharacteristic *characteristic in service.characteristics)
{
if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:CHARACTERISTIC_A]])
self.currentCharacteristicA = characteristic;
else if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:CHARACTERISTIC_B]])
self.currentCharacteristicB = characteristic;
else if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:CHARACTERISTIC_C]])
self.currentCharacteristicC = characteristic;
else if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:CHARACTERISTIC_D]])
self.currentCharacteristicD = characteristic;
}
而且,很明显,清理self.currentCharacteristic *恰当时断开连接。
我想Xamarin接口比CoreBluetooth更严格,并且不可能批量发现请求。 – allprog
如此真实 - 我刚才意识到问题在于Xamarin,而不是原生iOS。我的错。不理我! –
嗨马库斯,我现在正以正确的方式尝试。由于我有三个发现的服务a,b,c,但我很难一个接一个地调用peripheral.discovercharacteristic方法。首先,当我打电话给peripheral.discovercharacteristic(对于服务 - a),然后我在发现特征方法中接到回电,但在此之后,当我尝试发现第二服务的特征(b)时,它没有回拨电话, –