#import "ViewController.h"
#import <CoreBluetooth/CoreBluetooth.h>
@interface ViewController () <CBCentralManagerDelegate, CBPeripheralDelegate>
@property (nonatomic, strong) CBCentralManager *manager;
@property (nonatomic, strong) NSMutableArray *peripherals;
@end
@implementation ViewController
#pragma mark - 懒加载
- (CBCentralManager *)manager
{
if (_manager == nil) {
_manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
}
return _manager;
}
- (NSMutableArray *)peripherals
{
if (_peripherals == nil) {
_peripherals = [NSMutableArray array];
}
return _peripherals;
}
- (void)viewDidLoad {
[super viewDidLoad];
// 1.扫描所有的外围设备
// serviceUUIDs:可以将你想要扫描的服务的外围设备传入(传nil,扫描所有的外围设备)
[self.manager scanForPeripheralsWithServices:nil options:nil];
}
#pragma mark - CBCentralManagerDelegate
/**
* 状态发生改变的时候会执行该方法(蓝牙4.0没有打开变成打开状态就会调用该方法)
*/
- (void)centralManagerDidUpdateState:(CBCentralManager *)central
{
}
/**
* 当发现外围设备的时候会调用该方法
*
* @param peripheral 发现的外围设备
* @param advertisementData 外围设备发出信号
* @param RSSI 信号强度
*/
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary<NSString *,id> *)advertisementData RSSI:(NSNumber *)RSSI
{
if (![self.peripherals containsObject:peripheral]) {
[self.peripherals addObject:peripheral];
}
NSLog(@"%@,%@,%@", peripheral, advertisementData, RSSI);
}
/**
* 连接上外围设备的时候会调用该方法
* @param peripheral 连接上的外围设备
*/
- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral
{
// 1.扫描所有的服务
// serviceUUIDs:指定要扫描该外围设备的哪些服务(传nil,扫描所有的服务)
[peripheral discoverServices:nil];
//2.设置代理
peripheral.delegate = self;
}
#pragma mark - CBPeripheralDelegate
/**
* 发现外围设备的服务会来到该方法(扫描到服务之后直接添加peripheral的services)
*/
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error
{
for (CBService *service in peripheral.services) {
if ([service.UUID.UUIDString isEqualToString:@"123"]) {
// characteristicUUIDs : 可以指定想要扫描的特征(传nil,扫描所有的特征)
[peripheral discoverCharacteristics:nil forService:service];
}
}
}
/**
* 当扫描到某一个服务的特征的时候会调用该方法
* @param service 在哪一个服务里面的特征
*/
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error
{
for (CBCharacteristic *characteristic in service.characteristics) {
if ([characteristic.UUID.UUIDString isEqualToString:@"456"]) {
// 拿到特征,和外围设备进行交互
}
}
}
#pragma mark - 链接设备
- (void)connect:(CBPeripheral *)peripheral
{
[self.manager connectPeripheral:peripheral options:nil];
}
@end
Core Bluetooth
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 原文 关于Core Bluetooth Core Bluetooth框架为你的iOS和Mac应用跟蓝牙设备的通信提...
- 官方文档:https://developer.apple.com/reference/corebluetooth翻...
- 设置你的本地设备作为外设的最佳实践 和许多中央端事务一样,这个Core Bluetooth框架给你控制实现外设角色...