`
_wyh
  • 浏览: 61191 次
社区版块
存档分类
最新评论

ios CoreBluetooth外围设备的实现

    博客分类:
  • ios
ios 
阅读更多

CoreBlueTooth的使用要求设备必须支持蓝牙4.0,并且手机型号必须是iPhone4以上。

CoreBlueTooth关键在于两个名词,周边和中央,每个IOS设备都可以是一个周边,也可以是一个中央,但不能既是周边又是中央。
周边可以广播数据,可以告诉周围其他设备来接受数据,中央就是接收数据的那个设备。

如果一个ios手机,它既能当作外围设备,又能当作中央设备,那么在代码中就必须实现外围设备和中央设备这两种代码。

外围设备的实现大体分为以下步骤:
   1,创建周边管理类,Peripheral Manager
   2,为这个Peripheral Manager添加它自己的信息,比如各种服务,以及服务里面包括的各种特征。
   3,广播服务,告知其他设备该外围的存在。
   4,中央设备连接之后,与中央设备进行交互。

具体实现:
    1,在一个类中引入CoreBluetooth,并实现CBPeripheralManagerDelegate协议,在.h文件中声明CBPeripheralManager ,以及需要添加的服务和特征

#import <CoreBluetooth/CoreBluetooth.h>
@property (nonatomic, strong) CBPeripheralManager *manager;
@property (nonatomic, strong) CBMutableService*cutomService;
@property (nonatomic, strong) CBMutableCharacteristicclass*customCharacteristic;

    

     2,在viewDidLoad中初始化manager。

self.manager = [[CBPeripheralManager alloc] initWithDelegate:self queue:nil];

   

     3,实现peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral

- (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral {

    switch (peripheral.state) {

        case CBPeripheralManagerStatePoweredOn:

            [self setupService];

            break;

        default:

            NSLog(@"Peripheral Manager did change state");

            break;

    }

}

   这个代理方法在设备打开蓝牙或关闭蓝牙时运行,如果设备不支持蓝牙,做一些提醒。setupService是自己实现的添加服务的方法。

 

    4,添加服务以及服务的特征。实现上面的setupService方法。

- (void)setupService {
    CBUUID *characteristicUUID = [CBUUID UUIDWithString:kCharaUUID];
    self.customCharacteristic = [[CBMutableCharacteristic alloc] initWithType: characteristicUUID properties:CBCharacteristicPropertyNotify value:nil permissions:CBAttributePermissionsReadable];
    
    CBUUID *serviceUUID = [CBUUID UUIDWithString:kServiceUUID];
    self.customService = [[CBMutableService alloc] initWithType:serviceUUID primary:YES];
    
    [self.customService setCharacteristics:@[self.customCharacteristic]];

    [self.peripheralManager addService:self.customService];
}

     CBCharacteristicPropertyNotify 表示该特征可以被其他设备订阅。

 

    5,实现peripheralManager:didAddService:error:

- (void)peripheralManager:(CBPeripheralManager *)peripheral didAddService:(CBService *)service error:(NSError *)error {
    if (error == nil) {
        // Starts advertising the service
        [self.peripheralManager startAdvertising:@{ CBAdvertisementDataLocalNameKey : @"ICServer", CBAdvertisementDataServiceUUIDsKey : @[[CBUUID UUIDWithString:kServiceUUID]] }];
    }
}

   如果[self.peripheralManager addService:self.customService]执行了,也就是外围设备添加了服务,就会执行peripheralManager:didAddService:error:  然后执行startAdvertising开始广播。

  

    6,收到中央设备的消息后运行的方法。

//订阅
-(void)peripheralManager:(CBPeripheralManager )peripheral central:(CBCentral )central didSubscribeToCharacteristic:(CBCharacteristic )characteristic;
//取消订阅
-(void)peripheralManager:(CBPeripheralManager )peripheral central:(CBCentral )central didUnsubscribeFromCharacteristic:(CBCharacteristic )characteristic;
//读消息
-(void)peripheralManager:(CBPeripheralManager )peripheral didReceiveReadRequest:(CBATTRequest )request;
//写消息
-(void)peripheralManager:(CBPeripheralManager )peripheral didReceiveWriteRequests:(NSArray<CBATTRequest > *)requests;

 

0
0
分享到:
评论

相关推荐

    IOS corebluetooth

    在iOS平台上,CoreBluetooth框架是苹果提供的一种用于低功耗蓝牙(Bluetooth Low ...通过理解这些核心概念和步骤,开发者可以利用CoreBluetooth框架在iOS应用中实现与BLE设备的交互,从而为用户提供丰富的物联网体验。

    coreBluetooth

    CoreBluetooth框架为开发者提供了一套API,以便在iOS设备上实现蓝牙低功耗(BLE)技术的应用程序。BLE是蓝牙4.0及后续版本支持的一种无线通信标准,它允许设备之间进行低功耗的数据传输。CoreBluetooth框架简化了...

    CoreBluetoothExample:示例CoreBluetooth外围设备和中央应用程序

    在iOS和macOS上,CoreBluetooth允许应用程序作为中央设备(Central)去扫描和连接到外围设备(Peripheral),同时也支持设备作为外围设备广播自己的服务和特性。 **二、CoreBluetooth组件与概念** 1. **...

    IOS-coreBluetooth开发、soket通信

    在iOS应用开发中,`CoreBluetooth`框架是Apple官方提供的一种低功耗蓝牙(Bluetooth Low Energy,BLE)通信工具,广泛应用于物联网(IoT)设备的连接与交互。本教程将深入探讨如何利用`CoreBluetooth`进行蓝牙搜索、...

    osx-ble-peripheral, 在外围模式中,使用CoreBluetooth的示例.zip

    《使用CoreBluetooth实现OSX外围设备模式详解》 在苹果的操作系统中,无论是iOS还是macOS,CoreBluetooth框架提供了一种强大的方式来处理蓝牙低功耗(BLE)通信。本篇将深入探讨如何在macOS环境下,利用...

    CoreBluetooth

    CoreBluetooth是iOS、macOS和watchOS平台上的一个框架,用于实现低功耗蓝牙(Bluetooth Low Energy,也称为Bluetooth 4.0或Bluetooth Smart)通信。这个框架允许开发者创建能够与支持蓝牙4.0的外围设备进行交互的...

    iOS蓝牙4.0 CoreBluetooth 通讯(服务端+客户端)

    通过以上步骤,开发者可以构建自己的iOS蓝牙4.0服务端和客户端应用,实现设备间的无线通信。这个蓝牙Demo项目提供了一个基础框架,开发者可以根据需求进行扩展和完善。在实际开发过程中,记得不断测试和优化,确保...

    CoreBlueTooth蓝牙通信

    通过这两个工程,开发者可以理解如何实现设备间的双向通信,例如传输数据、控制外设等。 总结,CoreBluetooth框架为开发者提供了强大的BLE通信能力,从扫描、连接、发现服务和特性,到读写数据和处理通知。通过实践...

    SwiftBLEPeripheral:使用CoreBluetooth,Swift 2.1,iOS Device创建外围BLE设备的示例代码

    SwiftBLEPeripheral是一个基于Swift 2.1编程语言的开源项目,它展示了如何使用Apple的CoreBluetooth框架在iOS设备上创建一个蓝牙低功耗(BLE)的外围设备。这个项目对于那些想要了解如何将iOS设备作为蓝牙外围设备进行...

    iOS基础——实现蓝牙BLE4.0通信功能

    接下来,我们需要创建CBCentralManager对象,它是iOS设备的角色,用于扫描和连接外围设备(Peripheral)。初始化CBCentralManager时,需要提供一个代理对象,该对象遵循`CBCentralManagerDelegate`协议,实现其中的...

    Bluetooth4.0 for iOS devices

    蓝牙4.0技术对于iOS设备的通信功能是苹果公司为其移动设备开发的一套核心蓝牙框架,即CoreBluetooth。它主要负责简化常见的蓝牙任务,使iOS应用能够通过蓝牙与其他设备进行无线通信。在探讨CoreBluetooth框架时,...

    蓝牙4.0 iOS 开发源码

    CoreBluetooth是Apple提供的一套框架,用于在iOS和macOS设备上实现BLE通信。开发者可以通过这个框架与支持BLE的外围设备进行交互,如发送和接收数据、扫描设备、连接和断开连接等。核心组件包括CBCentralManager和...

    iOS蓝牙指南

    - **定义与功能:** CoreBluetooth是iOS中的一个框架,它为开发者提供了在iOS设备上实现蓝牙低功耗(BLE)通信的能力。该框架支持两种角色:中心设备(Central)和外围设备(Peripheral)。 - **关键组件:** - **...

    IOS 蓝牙4.0

    CoreBluetooth是苹果公司提供的一个核心框架,允许iOS应用与支持蓝牙低功耗的外围设备进行通信。 CoreBluetooth框架的核心概念包括中央设备(Central)和外围设备(Peripheral),它们分别代表了设备连接中的主设备和从...

    蓝牙4.0BLE源码(Android和IOS)

    你需要在Xcode工程中导入`CoreBluetooth`框架,并创建`CBCentralManager`实例来管理蓝牙中央设备,以及`CBPeripheral`实例来表示外围设备。同时,你需要实现`CBCentralManagerDelegate`和`CBPeripheralDelegate`协议...

    iOS BLE最佳实践

    在iOS开发中,苹果提供了一个名为CoreBluetooth的框架,用于与BLE设备进行交互。这个框架提供了一整套API,使得开发者能够管理BLE设备的搜索、连接、数据读写和通知等操作。开发者主要通过CBCentralManager和...

    Core Bluetooth Programming Guide(Apple 蓝牙4.0编程指南翻译版 出自官方文档)

    为了确保应用程序的性能并遵循最佳实践,还应当阅读“iOS应用程序的蓝牙核心后台处理”章节,以及“与远程外围设备交互的最佳实践”和“设置本地设备作为外围设备的最佳实践”。 ### 结语 苹果官方提供的Core ...

    swift-EasyBluetooth一款iOSBLE蓝牙调试工具

    - **CoreBluetooth框架**:苹果提供的API,用于在iOS设备上实现BLE通信,Swift-EasyBluetooth就是在CoreBluetooth的基础上进行了封装和优化。 3. **EasyBluetooth关键特性** - **连接设备**:通过设备UUID或者...

    iOS蓝牙开启

    在iOS系统中,蓝牙功能是设备之间无线通信的重要部分,尤其在实现设备间的数据传输、连接外设(如蓝牙耳机、智能手表等)时起到关键作用。本篇将详细讲解如何开启iOS设备的蓝牙功能以及相关开发知识。 首先,用户在...

Global site tag (gtag.js) - Google Analytics