蓝牙app开发-ios蓝牙通信

上传人:mg****85 文档编号:34249715 上传时间:2018-02-22 格式:DOCX 页数:11 大小:24.83KB
返回 下载 相关 举报
蓝牙app开发-ios蓝牙通信_第1页
第1页 / 共11页
蓝牙app开发-ios蓝牙通信_第2页
第2页 / 共11页
蓝牙app开发-ios蓝牙通信_第3页
第3页 / 共11页
蓝牙app开发-ios蓝牙通信_第4页
第4页 / 共11页
蓝牙app开发-ios蓝牙通信_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《蓝牙app开发-ios蓝牙通信》由会员分享,可在线阅读,更多相关《蓝牙app开发-ios蓝牙通信(11页珍藏版)》请在金锄头文库上搜索。

1、蓝牙 app 开发-iOS 蓝牙通信一、引言深圳酷点网是蓝牙手机 app 开发企业,蓝牙 4.0 是设备近距离通信的一种方便手段,在 iPhone 引入蓝牙 4.0 后,设备之间的通讯变得更加简单。相关的蓝牙操作由专门的 CoreBluetooth.framework 进行统一管理。通过蓝牙进行通讯交互分为两方,一方为中心设备 central,一方为外设 peripheral,外设通过广播的方式向外发送信息,中心设备检索到外设发的广播信息,可以进行配对连接,进而进行数据交互。二、中心设备 CBCentralManagerCBCentralManager 是管理中心设备的管理类,其中重要方法如下

2、:/设置中心设备代理property(assign, nonatomic, nullable) id delegate;/中心设备当前状态property(readonly) CBCentralManagerState state;/中心设备是否正在扫描property(readonly) BOOL isScanning NS_AVAILABLE(NA, 9_0);其中 state 是一个枚举,有关蓝牙是否可用的状态如下:typedef NS_ENUM(NSInteger, CBCentralManagerState) /状态未知CBCentralManagerStateUnknown = 0

3、,/连接断开 即将重置CBCentralManagerStateResetting,/该平台不支持蓝牙CBCentralManagerStateUnsupported, /未授权蓝牙使用 CBCentralManagerStateUnauthorized,/蓝牙关闭CBCentralManagerStatePoweredOff,/蓝牙正常开启CBCentralManagerStatePoweredOn,;下面这些方法用于初始化管理中心:/初始化方法/设置的代理需要遵守 CBCentralManagerDelegate 协议/queue可以设置蓝牙扫描的线程 传入 nil 则为在主线程中进行-

4、(instancetype)initWithDelegate:(nullable id)delegatequeue:(nullable dispatch_queue_t)queue;/此方法同上 在 options 字典中用于进行一些管理中心的初始化属性设置/字典中支持的键值如下 http:/ * const CBCentralManagerOptionShowPowerAlertKey 对应一个NSNumber 类型的 bool 值,用于设置是否在关闭蓝牙时弹出用户提示NSString * const CBCentralManagerOptionRestoreIdentifierKey 对应

5、一个NSString 对象,设置管理中心的标识符 ID*/- (instancetype)initWithDelegate:(nullable id)delegatequeue:(nullable dispatch_queue_t)queueoptions:(nullable NSDictionary *)options;/根据获取所有已知设备- (NSArray *)retrievePeripheralsWithIdentifiers:(NSArray *)identifiers;/根据服务 id 获取所有连接的设备 - (NSArray *)retrieveConnectedPeriphe

6、ralsWithServices:(NSArray *)serviceUUIDs;在初始化管理中心完成后,会回调代理中的如下方法,我们必须实现如下方法:/这个方法中可以获取到管理中心的状态- (void)centralManagerDidUpdateState:(CBCentralManager *)central;如果上面方法中管理中心状态为蓝牙可用,可以通过下面方法开启扫描外设:/serviceUUIDs 用于扫描一个特点 ID 的外设 options 用于设置一些扫描属性 键值如下/*/是否允许重复扫描 对应 NSNumber 的 bool 值,默认为 NO,会自动去重NSString

7、*const CBCentralManagerScanOptionAllowDuplicatesKey;/要扫描的设备 UUID 数组 对应 NSArray NSString *const CBCentralManagerScanOptionSolicitedServiceUUIDsKey;*/- (void)scanForPeripheralsWithServices:(nullable NSArray *)serviceUUIDs options:(nullable NSDictionary *)options;/停止扫描外设- (void)stopScan;扫描的结果会在如下代理方法中回

8、掉:/peripheral 扫描到的外设/advertisementData 是外设发送的广播数据/RSSI 是信号强度 http:/ (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI;扫描到外设后,通过下面方法可以连接一个外设:/*options 中可以设置一些连接设备的初始属性键值如下/对应 NSNu

9、mber 的 bool 值,设置当外设连接后是否弹出一个警告NSString *const CBConnectPeripheralOptionNotifyOnConnectionKey;/对应 NSNumber 的 bool 值,设置当外设断开连接后是否弹出一个警告NSString *const CBConnectPeripheralOptionNotifyOnDisconnectionKey;/对应 NSNumber 的 bool 值,设置当外设暂停连接后是否弹出一个警告 http:/ *const CBConnectPeripheralOptionNotifyOnNotificationK

10、ey;*/- (void)connectPeripheral:(CBPeripheral *)peripheral options:(nullable NSDictionary *)options;/取消一个外设的连接- (void)cancelPeripheralConnection:(CBPeripheral *)peripheral;调用过连接外设的方法后,会回掉如下代理方法:/连接外设成功- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral;/

11、连接外设失败- (void)centralManager:(CBCentralManager *)central didFailToConnectPeripheral:(CBPeripheral *)peripheral error:(nullable NSError *)error;/断开外设连接- (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(nullable NSError *)error;当管理中心恢复时会调用如下代理:

12、1 /dict 中会传入如下键值对 2 /* 3 /恢复连接的外设数组 4 NSString *const CBCentralManagerRestoredStatePeripheralsKey; 5 /恢复连接的服务 UUID 数组 6 NSString *const CBCentralManagerRestoredStateScanServicesKey; 7 /恢复连接的外设扫描属性字典数组 8 NSString *const CBCentralManagerRestoredStateScanOptionsKey; 9 */10 - (void)centralManager:(CBCe

13、ntralManager *)central willRestoreState:(NSDictionary *)dict;三、外设 CBPeripheralManager从上面我们知道,中心设备是用来扫描周围的外设,两台设备的通讯中,必须有一个充当中心设备,一个充当外设,外设是由 CBPeripheralManager 进行管理,主要方法如下:1 /设置外设管理中心代理 2 property(assign, nonatomic, nullable) id delegate; 3 /外设状态 枚举如中心设备 4 property(readonly) CBPeripheralManagerStat

14、e state; 5 /是否正在发送广播 6 property(readonly) BOOL isAdvertising; 7 /用户的授权状态 8 + (CBPeripheralManagerAuthorizationStatus)authorizationStatus; 9 /初始化并设置代理 参数的具体含义与中心设备管理中心 10 - (instancetype)initWithDelegate:(nullable id)delegate11 queue:(nullable dispatch_queue_t);12 - (instancetype)initWithDelegate:(nu

15、llable id)delegate13 queue:(nullable dispatch_queue_t)queue14 options:(nullable NSDictionary *)options;15 /开始发送广播 何问起 16 /advertisementData 中可以发送的数据有约定 如下 17 /*18 对应设置 NSString 类型的广播名 19 NSString *const CBAdvertisementDataLocalNameKey;20 外设制造商的 NSData 数据 21 NSString *const CBAdvertisementDataManufacturerDataKey;22 外设制造商的 CBUUID数据 23 NSString *const CBAdvertisementDataServiceDataKey;24 服务的UUID 与其对应的服务数据字典数组 25 NSString *const CBAdvertisementDataServiceUUIDsKey;26 附加服务的 UUID 数组 2

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号