iOS BLE:`discoverServices:nil`有时只发现一项服务

时间:2017-07-03 15:22:17

标签: ios bluetooth-lowenergy

我正在使用

[central connectPeripheral: peripheral options: nil];

NSData *data1 = [NSData dataWithBytes:serialPortServiceUuid length:SERIAL_PORT_SERVICE_UUID_LEN];
CBUUID *uuid1 = [CBUUID UUIDWithData:data1];

NSData *data2 = [NSData dataWithBytes:deviceIdServiceUuid length:SERVICE_UUID_DEFAULT_LEN];
CBUUID *uuid2 = [CBUUID UUIDWithData:data2];

[peripheral discoverServices:@[uuid1, uuid2]];

有时会找到我的外设的两种服务,有时只有一种(UUID = Device Information)。在我看来,如果在连接尝试之间有一段时间它会更可靠,并且如果它应该自动重新连接则会更频繁地失败(我在{{connect中执行disconnect 1}})。

令我恼火的是,似乎已建立连接并且找到了服务,但只有一个而不是两者(我正在寻找带有ID的服务,而不是nil)。< / p>

有什么想法吗?

修改

我的外围设备是定制的医疗产品,当设置连接时,一切都按预期工作&#34;手动&#34;而不是通过重新建立。

那么有效的方法是按一个按钮然后执行connectPeripheral =&gt; discoverServices这件事,不起作用的是在connectPeripheral方法中执行didDisconnect; didDiscoverServices也被调用,但只有一个而不是两个服务。

0 个答案:

没有答案