zoukankan      html  css  js  c++  java
  • 蓝牙开发

    想要进行蓝牙开发,需要添加系统的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开发高手!!!解答您的问题!!!

  • 相关阅读:
    poj 3666 Making the Grade
    poj 3186 Treats for the Cows (区间dp)
    hdu 1074 Doing Homework(状压)
    CodeForces 489C Given Length and Sum of Digits...
    CodeForces 163A Substring and Subsequence
    CodeForces 366C Dima and Salad
    CodeForces 180C Letter
    CodeForces
    hdu 2859 Phalanx
    socket接收大数据流
  • 原文地址:https://www.cnblogs.com/CoderEYLee/p/Object-C-0030.html
Copyright © 2011-2022 走看看