當我發現一個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)時,它沒有回撥電話, –