如何使用核心蓝牙填充BLE iPad和iPhone列表

时间:2014-09-22 18:07:37

标签: ios7 bluetooth core-bluetooth

我正在尝试使用核心蓝牙创建一个简单的浏览器,它可以发现附近的iPhone和iPad,并在表格视图中显示它们。到目前为止,我正在实施中央经理并收到通知。这些信息似乎有点神秘

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI {
    NSLog(@"Did discover peripheral. peripheral: %@ rssi: %@, UUID: %@ advertisementData: %@ ", peripheral, RSSI, peripheral.UUID, advertisementData);
} 

这些信息看起来有点神秘,因为并非某些原因并非所有设备都有“名称”参数。

2014-09-22 13:11:13.142 WhoDat [3333:60b]发现了外围设备。外围:

0x1780b4f40 identifier = 9373F3AD-726D-2EC9-AB2C-BBAB9B2ED319, Name = "(null)", state = disconnected> rssi: -63, UUID: <CFUUID 0x178036ee0> 9373F3AD-726D-2EC9-AB2C-BBAB9B2ED319 advertisementData: {
    kCBAdvDataChannel = 37;
    kCBAdvDataIsConnectable = 1;
}

而其他人则

2014-09-22 13:13:26.224 WhoDat[3333:60b] Did discover peripheral. peripheral: <CBPeripheral: 0x1700b4b80 identifier = 74E42396-CB35-3FB7-A855-F2BB78AC2C78, Name = "Zip", state = disconnected> rssi: -95, UUID: <CFUUID 0x17002da60> 74E42396-CB35-3FB7-A855-F2BB78AC2C78 advertisementData: {
    kCBAdvDataChannel = 39;
    kCBAdvDataIsConnectable = 1;
    kCBAdvDataServiceData =     {
        "Device Information" = <0204>;
    };
    kCBAdvDataServiceUUIDs =     (
        "ADAB67D3-6E7D-4601-BDA2-BFFAA68956BA"
    );
} 

但我似乎无法区分什么是什么。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

您没有收到姓名的最可能原因是该设备没有在其广告包中刊登广告。

为了使事情变得更加奇怪,CoreBluetooth会进行一些缓存,这会在与设备交互时产生奇怪的不一致。

如果您连接到所述设备,一个主要的示例是不会通告它的名称的设备将显示它的缓存名称。

我的建议是用一串&#34; No Name&#34;来代表它。直到你通过连接到所述设备收到一个。