是否可以创建一个可以扫描附近移动设备(例如iPhone,Android,iPad等)的iOS应用程序,而无需在附近的移动设备上运行任何自定义应用程序?
我尝试过使用CoreBluetooth,在iPhone 6 +上运行:
[self.centralManager scanForPeripheralsWithServices:nil options:nil];
但它附近唯一检测到的设备是我的iMac,它不能检测我的iPad Air 2或我的蓝牙耳机。
我做错了吗?
答案 0 :(得分:1)
核心蓝牙仅适用于低功耗蓝牙(蓝牙4.0)设备,而非经典蓝牙设备。为了可被发现,设备必须通告一个或多个BLE服务。你可以实现CBPeripheralManager
来实现这一点,而且“扫描仪”和“外围设备”方面甚至还有来自Apple的sample code。请注意,通过这种方式,您还可以发现或被其他移动设备发现,例如Android智能手机。
我不知道是否可以检测到热点或切换BLE服务。核心蓝牙不允许您访问“原始”蓝牙低功耗广告数据包,因此Apple可能会过滤掉一些东西。
如果您只想检测iOS设备(没有其他BLE设备/配件),您也可以使用Multipeer Connectivity框架。我个人觉得它更容易使用,它甚至提供了内置的"discovered devices" view。但是你仍然需要在双方都运行自定义应用程序。
答案 1 :(得分:0)
如果您使用蓝牙低功耗,它只会检测BLE设备的外围设备。 但是范围有限。通过文档说明,BLE设备的范围大约为300米。您可以通过CBCentralManager外设方法获得信号强度:
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
这里RSSI是你的信号强度。但外围设备必须是BLE启用,即蓝牙版本4.0或以上
答案 2 :(得分:0)
如果您不需要在App Store上放置任何内容,您可以越狱iPhone并直接访问数据包。
Cydia中提供的Bluetooth Companion将在手机上显示蓝牙数据包。我不确定该项目的来源是否可用,但您可以查看其他项目,例如BTStack(这是一个很好的Getting Started guide here)。
答案 3 :(得分:0)
我将从参与嵌入式系统开发的人员的角度出发。如前所述,BLE仅检测其他BLE设备的外围设备,因此我不认为蓝牙技术是检测附近移动设备的应用程序的最佳选择。
您的应用应包含两项检测功能。人们应该使用蓝牙来检测常规PC并使用GPS来检测其他移动设备,因为它是我认为在Android和4G ipad mini等中唯一存在的其他外围设备。
对于你的耳机,如果没有检测到,那么我不知道任何会修改硬件不兼容性的软件解决方案,所以我建议你买一个与蓝牙设备兼容的耳机。
您的问题不是软件问题,而是设备的硬件限制。