• 蓝牙开发


    想要进行蓝牙开发,需要添加系统的CoreBluetooth框架CoreBluetooth.framework

    #import "ViewController.h"
    #import <CoreBluetooth/CoreBluetooth.h>
    
    @interface ViewController ()<CBCentralManagerDelegate, CBPeripheralDelegate>
    
    //外设管理者
    @property (nonatomic, strong) CBCentralManager * manager;
    
    //存放所有扫描到的外设
    @property (nonatomic, strong) NSMutableArray * peripheralArrayM;
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        //创建中央管理者
        self.manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
        
        //扫描周边的外设
        [self.manager scanForPeripheralsWithServices:nil options:nil];
    }
    
    - (void)viewWillDisappear:(BOOL)animated
    {
        [super viewWillDisappear:animated];
        
        [self.manager stopScan];
    }
    
    #pragma mark - CBCentralManagerDelegate
    //实时更新扫描到的设备状态
    - (void)centralManagerDidUpdateState:(CBCentralManager *)central
    {
        NSLog(@"------%ld", (long)central.state);
    }
    
    /**
     1.发现外围设备
     
     @param central central
     @param peripheral 外围设备
     @param advertisementData 相关信息
     @param RSSI 信号强度
     */
    - (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary<NSString *, id> *)advertisementData RSSI:(NSNumber *)RSSI
    {
        if (![self.peripheralArrayM containsObject:peripheral]) {
            [self.peripheralArrayM addObject:peripheral];
        }
        
        //2.连接对应的外设
        [self.manager connectPeripheral:peripheral options:nil];
        
        peripheral.delegate = self;
    }
    
    //3.中心管理者连接外围设备成功之后会调用
    - (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral
    {
        //4.扫描服务 (nil:会发现所有服务)
        [peripheral discoverServices:nil];
    }
    #pragma mark - CBPeripheralDelegate
    - (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error
    {
        //5.扫描到服务
        NSArray * services = peripheral.services;
        for (CBService * service in services) {
            //每一个服务,根据服务去扫描
            if ([service.UUID.UUIDString isEqualToString:@"你想要操作的服务"]) {
                //6.让外设去发现该服务的所有特征
                [peripheral discoverCharacteristics:nil forService:service];
                
            }
        }
    }
    
    /**
     外设发现特征
     
     @param peripheral 外设
     @param service 服务
     @param error error
     */
    - (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(nonnull CBService *)service error:(nullable NSError *)error
    {
        //7.获取到对应服务的特征
        NSArray * characteristics = service.characteristics;
        for (CBCharacteristic * characteristic in characteristics) {
            //每一个特征
            if ([characteristic.UUID.UUIDString isEqualToString:@"你想要操作的特性"]) {
                //8.向对应的特征写、读数据
                [peripheral writeValue:[[NSData alloc] init] forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse];
                [peripheral readValueForCharacteristic:characteristic];
                
            }
        }
    }
    
    - (void)peripheral:(CBPeripheral *)peripheral didWriteValueForDescriptor:(nonnull CBDescriptor *)descriptor error:(nullable NSError *)error
    {
        //9.向对应的特征写数据
        NSLog(@"---9.向对应的特征写数据---%@", descriptor.UUID.UUIDString);
    }
    
    - (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForDescriptor:(CBDescriptor *)descriptor error:(NSError *)error
    {
        //10.对应的特征读数据
        NSLog(@"---10.对应的特征读数据---%@", descriptor.UUID.UUIDString);
    }
    
    
    #pragma mark - 懒加载
    - (NSMutableArray *)peripheralArrayM
    {
        if (_peripheralArrayM == nil) {
            _peripheralArrayM = [NSMutableArray array];
        }
        return _peripheralArrayM;
    }
    
    @end

    更多内容--> 博客导航 每周一篇哟!!!

    有任何关于iOS开发的问题!欢迎下方留言!!!或者邮件lieryangios@126.com 虽然我不一定能够解答出来,但是我会请教iOS开发高手!!!解答您的问题!!!

  • 相关阅读:
    Slimer软工课设日报-2016年6月30日
    Slimer软工课设日报-2016年6月29日
    软件工程个人总结
    什么是Bug
    构建之法读后感----第1章 绪论
    7.4
    7.1-7.3
    6.29
    软件工程课设 第二天
    软工总结 作业
  • 原文地址:https://www.cnblogs.com/CoderEYLee/p/Object-C-0030.html
Copyright © 2020-2023  润新知