我正在编写iOS应用程序,以及编写BLE113
蓝牙外设,我无法让我的iOS应用程序在我自己定义的蓝牙外设上发现服务。
这是gatt.xml
中定义的两项服务:
<service uuid="1802" advertise="true" >
<description>Immediate Alert Service</description>
<characteristic uuid="2a06">
<properties write_no_response="true" />
<value length="1" />
</characteristic>
</service>
<service uuid="95643131-7088-492b-8038-423cdb422659" advertise="true" type="primary">
<description>Test Service</description>
<characteristic uuid="6864d681-06ea-4cbf-b49b-81299ac2f572" id="my_data">
<properties write="true" indicate="true" />
<value length="1"/>
</characteristic>
</service>
一旦中央经理进入&#34; CBCentralManagerStatePoweredOn
&#34;我可以使用应用程序中的一个开关来扫描我的iOS应用程序中的外围设备,这些外围设备的服务包含&#34; Test Service
&#34; UUID
:
NSString *myUUID = @"95643131-7088-492b-8038-423cdb422659";
NSArray *services = [NSArray arrayWithObjects:
[CBUUID UUIDWithString:myUUID],
nil];
[self.centralManager scanForPeripheralsWithServices:services options:nil];
将找到外围设备,它将连接。但是,当我尝试在外围设备上发现服务时:
- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral
{
[peripheral discoverServices:nil];
self.connected = [NSString stringWithFormat:@"Connected: %@", peripheral.state == CBPeripheralStateConnected ? @"YES" : @"NO"];
NSLog(@"%@", self.connected);
}
它只会发现&#34;立即警报服务&#34;这是一项蓝牙SIG
服务,如果我只尝试使用&#34; {{1发现服务,我将不会发现任何服务}}&#34; Test Service
致电:
UUID
使用&#34; NSString *myUUID = @"95643131-7088-492b-8038-423cdb422659";
NSArray *services = [NSArray arrayWithObjects:
[CBUUID UUIDWithString:myUUID],
nil];
[peripheral discoverServices:services];
&#34;应用程序我下载到我正在使用的iPad,它将发现我定义的外围设备和服务,并且在使用BLE Scanner
工具时它们也都可见,因此我假设该服务正在正确地进行广告宣传。是否有某种方式我应该尝试发现特定于供应商的服务?我是Objective-C和BLEGUI
的新手,所以任何帮助都会非常感激。