常见问题汇总
1. 为什么手机上需要使用APP来进行蓝牙连接和通讯?
手机原生蓝牙功能仅支持通用场景,如音频传输、文件传输,部分蓝牙外围设备能通过手机内置的设置程序连接上,如蓝牙外放器,蓝牙耳机,蓝牙键盘,蓝牙鼠标等,当蓝牙外围设备无法被手机原生设置程序连接,例如蓝牙模块仅支持SPP/GATT协议,为了连接这种模块,一般需要手机安装特定的手机应用,例如 FeasyBlue 应用。
2. iOS 手机如何获取蓝牙MAC地址?
iOS系统出于安全考虑,在底层将蓝牙MAC地址变成了UUID发送给上层应用。所以APP无法获取到设备的MAC地址。
FSC-BT3721V系列蓝牙模块默认会将MAC地址放在广播中,APP可以通过下面的方法从广播包中获取MAC地址。
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
if(![self describeDictonary:advertisementData])
{
NSLog(@"is not fsc module");
return;
}
}
- (Boolean)describeDictonary: (NSDictionary *) dict
{
NSArray *keys;
id key;
keys = [dict allKeys];
for(int i = 0; i < [keys count]; i++)
{
key = [keys objectAtIndex:i];
if([key isEqualToString:@"kCBAdvDataManufacturerData"])
{
NSData *tempValue = [dict objectForKey:key];
const Byte *tempByte = [tempValue bytes];
if([tempValue length] == 6)
{
// tempByte 后面参数是蓝牙地址
return true
}
}else if([key isEqualToString:@"kCBAdvDataLocalName"])
{
//there is name
//NSString *szName = [dict objectForKey: key];
}
}
return false;
}