当我使用iOS蓝牙时,代码如下:
static NSString * const kServiceUUID = @"1802";
[self.manager scanForPeripheralsWithServices:@[ [CBUUID UUIDWithString:kServiceUUID] ] options:@{CBCentralManagerScanOptionAllowDuplicatesKey : @NO }];
为什么没有回应?我在方法中尝试了各种参数对 scanForPeripheralsWithServices 我查过这个问题: How to get list of available Bluetooth devices?
我的设备是iOS 6的iPod touch 5(越狱)。我已经测试了一些蓝牙4.0设备。谁能告诉我为什么?
答案 0 :(得分:7)
使用nil
服务进行扫描,检查您要查找的外围设备是否实际发布了任何内容。调用centralManager:didDiscoverPeripheral:advertisementData:RSSI:
时,请查看广告数据。只需NSLog()
它。如果不包含0x1802,则外围设备不会宣传此服务,扫描仪也不会以这种方式找到它。要更正此问题,请在广告设置中包含该服务:
NSDictionary *advData =
@{CBAdvertisementDataServiceUUIDsKey:@[[CBUUID UUIDWithString:@"1802"]]};
[peripheralManager startAdvertising:advData];
答案 1 :(得分:1)
您是否已登录广告iOS设备,它实际上正在宣传即时警报服务(1802)?您可以在CBPeripheralManagerDelegate peripheralManagerDidStartAdvertising:
回调中打印出来。您也可以使用前景中的两个应用程序扫描nil并查看广告数据以进行验证。同样,如果它是专用的外围设备,则在前台运行中央管理器的设备也是如此。如果您仍然看不到外围设备(并且您无法访问此外围设备的固件),可能需要购买TI数据包嗅探器以查看所有传输的数据包。
答案 2 :(得分:1)