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