常见问题汇总

1. 为什么手机上需要使用APP来进行蓝牙连接和通讯?

手机原生蓝牙功能仅支持通用场景,如音频传输、文件传输,部分蓝牙外围设备能通过手机内置的设置程序连接上,如蓝牙外放器,蓝牙耳机,蓝牙键盘,蓝牙鼠标等,当蓝牙外围设备无法被手机原生设置程序连接,例如蓝牙模块仅支持SPP/GATT协议,为了连接这种模块,一般需要手机安装特定的手机应用,例如 FeasyBlue 应用

2. iOS 手机如何获取蓝牙MAC地址?

iOS系统出于安全考虑,在底层将蓝牙MAC地址变成了UUID发送给上层应用,所以APP无法获取到设备的MAC地址。

FSC-BT618x系列蓝牙模块默认会将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;
}