外围设备的iOS蓝牙扫描服务无结果

外围设备的iOS蓝牙扫描服务无结果,ios,bluetooth,core-bluetooth,bluetooth-lowenergy,Ios,Bluetooth,Core Bluetooth,Bluetooth Lowenergy,当我使用iOS蓝牙时,代码如下: static NSString * const kServiceUUID = @"1802"; [self.manager scanForPeripheralsWithServices:@[ [CBUUID UUIDWithString:kServiceUUID] ] options:@{CBCentralManagerScanOptionAllowDuplicatesKey : @NO }]; 为什么没有回应?我在方法中尝试了各种参数对 扫描外围设备和服务

当我使用iOS蓝牙时,代码如下:

static NSString * const kServiceUUID = @"1802";
[self.manager scanForPeripheralsWithServices:@[ [CBUUID UUIDWithString:kServiceUUID] ] options:@{CBCentralManagerScanOptionAllowDuplicatesKey : @NO }];
为什么没有回应?我在方法中尝试了各种参数对 扫描外围设备和服务 我检查了这个问题:


我的设备是带iOS 6的iPod touch 5(越狱)。我已经测试了一些蓝牙4.0设备。有人能告诉我为什么吗?

您是否登录了正在发布即时提醒服务(1802)广告的iOS广告设备??您可以在CBPeripheralManagerDelegate
PeripheralManagerDeStartAdvertising:
回调中打印此内容。你也可以在前台用两个应用程序扫描nil,然后查看广告数据进行验证。同样,如果它是一个专用的ble外设,也可以对在前台运行中央管理器的设备执行相同的操作。如果您仍然看不到外围设备(并且您没有访问此外围设备固件的权限),可能需要购买TI数据包嗅探器来查看所有正在传递的数据包。

使用
nil
服务进行扫描,以检查您要找的外围设备是否真的发布了任何广告。调用
centralManager:didDiscoveryPeripheral:advertisementData:RSSI:
时,请检查广告数据。只需
NSLog()
it。如果0x1802不在其中,则外围设备不宣传此服务,扫描仪也不会以这种方式找到它。要更正此问题,请将服务包括在广告设置中:

NSDictionary *advData = 
 @{CBAdvertisementDataServiceUUIDsKey:@[[CBUUID UUIDWithString:@"1802"]]};
[peripheralManager startAdvertising:advData];

谢谢你无数次,但我不得不说对不起。然后我用另一个Bluetooth 4.0 LE设备测试了我的代码。它起作用了!这意味着我以前的Bluetooth 4.0设备不是LE版本。他们说错话了!谢谢您,并对浪费您的时间表示歉意。

如果选择是?@Larme也不起作用。我不明白这把钥匙是什么意思。我偶尔会看到蓝牙LE设备(通常是我配置错误,在为设备做广告时忘记为特定服务做广告的设备)在扫描特定服务时丢失。如果您取消服务并运行扫描,您可以查看它返回的所有设备,以验证该设备是否被视为广告,然后查看它所宣传的服务。真是太好了。对我们来说不好,谁提供了答案。我想你对我们投票是公平的。请记住,这不会花费您任何费用,事实上,建议的解决方案可以帮助未来的访问者解决这个问题。@Smeegol您使用的是什么类型的蓝牙4.0 LE设备,我尝试了Cirago BT8000 LE设备,但它没有检测到。请提及我们可用于ios的蓝牙加密狗名称。提前谢谢!还是不适合我。但我明白了。我在状态更改为CBCentralManagerStatePoweredOn之前启动了扫描。调试的好方法是为ServiceUUID设置一个空数组以查看所有外围设备。