Ios 蓝牙应用体系结构

Ios 蓝牙应用体系结构,ios,bluetooth,bluetooth-lowenergy,core-bluetooth,android-bluetooth,Ios,Bluetooth,Bluetooth Lowenergy,Core Bluetooth,Android Bluetooth,我正在制作我的第一个蓝牙LE应用程序,需要一些关于如何处理的建议 我需要像笔记本电脑这样的设备(Windows、Linux、OSX,没关系),跟踪设备(iOS和Android)何时进入蓝牙范围。这些设备将运行一个使用BT LE的应用程序。每个移动设备应用程序都有一个笔记本电脑将收集的唯一id(可能是用户id)。我需要在没有用户交互的情况下实现这一点。就这样 外围设备和中央设备应该是哪一个? 笔记本电脑应该是此应用程序的中心吗? 我还看到了蓝牙应用程序中使用的GATT服务器。使用GATT服务器比使

我正在制作我的第一个蓝牙LE应用程序,需要一些关于如何处理的建议

我需要像笔记本电脑这样的设备(Windows、Linux、OSX,没关系),跟踪设备(iOS和Android)何时进入蓝牙范围。这些设备将运行一个使用BT LE的应用程序。每个移动设备应用程序都有一个笔记本电脑将收集的唯一id(可能是用户id)。我需要在没有用户交互的情况下实现这一点。就这样

外围设备和中央设备应该是哪一个?
笔记本电脑应该是此应用程序的中心吗?

我还看到了蓝牙应用程序中使用的GATT服务器。使用GATT服务器比使用外围设备和中央设备更有意义吗?

我目前正在为
核心蓝牙构建一个基于块的开源包装器

我会将笔记本电脑用作监听所有外围设备的
中央管理器

iDevice将是
外围设备管理器
广播本身及其服务和特性

遗憾的是,我没有为windows和BLE开发的经验,但我的框架可以在iOS和OSX上工作,而且我可以发送或发现彼此

关于iOS上的唯一ID,当您制作外围设备时,您使用
CBUUID
进行广播。这可用于唯一标识作为GUID的外围设备


要实现这一切,应用程序需要在后台运行,否则外围设备的广播将被终止

我现在发布了核心蓝牙管理器的第一部分。V1.0目前只有中央管理器部分,但外围管理器部分正在开发中


您可以在

下载。请注意,您只需去结帐即可

下面是使用LGBluetooth的绝佳示例(注意:即使连接也是由框架处理的)

读取操作

[LGUtils readDataFromCharactUUID:@"f045" serviceUUID:@"5ec0" peripheral:peripheral completion:^(NSData *data, NSError *error) { NSLog(@"Data : %s Error : %@", (char *)[data bytes], error); }]; int8_t dataToWrite = 0xFF; [LGUtils writeData:[NSData dataWithBytes:&dataToWrite length:sizeof(dataToWrite)] charactUUID:@"cef9" serviceUUID:@"5ec0" peripheral:peripheral completion:^(NSError *error) { NSLog(@"Error : %@", error); }]; [LGUtils ReadDataFromCharacterUID:@“f045” serviceUUID:@“5ec0” 外围设备:外围设备 完成:^(NSData*数据,NSError*错误){ NSLog(@“数据:%s错误:%@,(字符*)[数据字节],错误); }]; 写入操作

[LGUtils readDataFromCharactUUID:@"f045" serviceUUID:@"5ec0" peripheral:peripheral completion:^(NSData *data, NSError *error) { NSLog(@"Data : %s Error : %@", (char *)[data bytes], error); }]; int8_t dataToWrite = 0xFF; [LGUtils writeData:[NSData dataWithBytes:&dataToWrite length:sizeof(dataToWrite)] charactUUID:@"cef9" serviceUUID:@"5ec0" peripheral:peripheral completion:^(NSError *error) { NSLog(@"Error : %@", error); }]; int8_t dataToWrite=0xFF; [LGUtils writeData:[NSData dataWithBytes:&dataToWrite长度:sizeof(dataToWrite)] 字符UID:@“cef9” serviceUUID:@“5ec0” 外围设备:外围设备完成:^(N错误*错误){ NSLog(@“错误:%@”,错误); }];
谢谢唯一id将存储在iOS应用程序中。可以在没有用户交互的情况下发送到外围设备吗?如果我使用iOS作为外围设备,OSX作为中心设备,您对开始使用示例代码或教程有什么建议吗?如果iDevice已打开应用程序,并广播一项以ID为特征的服务,则是,中心管理器应该能够发现外围设备,连接到它并读取其值,前提是特性不需要任何验证。这意味着该特征没有被加密,如果它被加密了,那么用户必须与中央管理器配对才能得到值,就像我说的。我正在开发一个框架,旨在使通过BLE读取和发送数据更加容易。一旦我打开了它,我会发布一个链接。如果我只使用iOS,这种方法很好。据我所见,Android不允许该应用程序仅作为外围设备的中心。@user3380025如果您想反向操作(即iOS作为中心设备,OSX作为外围设备),您可以在OSX上设置写入特性。顺序如下:1)iOS不断扫描,2)范围内的OSX,iOS检测外设,连接,发现服务,发现特征,发现写入特征4)iOS向OSX写入唯一ID,5)iOS断开连接。如果您想要安全性,可以添加只需要配对一次的加密,或者您可以设计某种哈希算法,以便iOS传输的值只能由OSX解释。