iOS CoreBluetooth外设未发现我的自定义供应商服务

时间:2016-07-01 10:40:47

标签: ios objective-c bluetooth core-bluetooth

我正在编写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的新手,所以任何帮助都会非常感激。

0 个答案:

没有答案