了解External Accessory Framework之EAAccessory
2015-10-26 19:46
357 查看
最近要做MFI配件的app,找了一下需要External Accessory Framework框架,但是相关的文章貌似不多,所以记录下自己的所学到的一些内容与大家分享。
那么什么是External Accessory Framework?
这里引用了Apple Developer内的原文:
The External Accessory framework (
a conduit for communicating with accessories attached to any iOS-based device. App developers can use this conduit to integrate accessory-level features into their apps.
意思简单理解就是:
External Accessory Framework提供了配件连接iOS设备的通道。开发者可以通过它来开发连接配件的app。
配件可以通过30pin、蓝牙、USB的方式连接iOS设备。
下面就开始简单了解下External Accessory Framework都有些什么吧:
1. 它包含三个类:
EAAccessory
代表了一个单例的硬件配件对象。
EAAccessoryManager
管理所有连接到iPhone的配件。
EASession
定义了iPhone app与外部配件的连接和通道。
2. EAAccessory类
EAAccessory类的属性:
1) Boolean connected read-only 配件是否连接iPhone的标志
2) NSUInteger connectionID read-only 连接设备的配件唯一标识
EAAccessory Framework提供了可用配件的列表,所以要用NSArray来处理:
3) id<EAAcessoryDelegate> delegate 定义了接收配件状态变化的notifications的对象
定义一个accController类
4) NSString firmwareRevision read-only 固件版本信息,注意兼容性
5) NNString hardwareRevision read-only 硬件版本信息,同上
6) NSString manufacturer read-only 配件所属公司
7) NSString modelNumber read-only 配件设备号
8) NSString name read-only 配件名称,反馈给用户连接了正确的配件
9) NSArray protocolStrings read-only protocols的名称,注意,跟connectionID对应,所以是一个NSArray的对象
代码示例:
这段代码可以用在配件连接设备后来创建一个accessory controller对象。
调用个的方法:
10) NSString serialNumber read-only 连接的配件序列号,每个配件唯一
EAAccessory类中的常量:
EAConnectionIDNone 实质为0,无效的连接,通过与connectionID的比较,可以尝试重连配件或者提示用户断开配件重新连接设备。
这第一个类EAAccessory就先了解到这里。
那么什么是External Accessory Framework?
这里引用了Apple Developer内的原文:
The External Accessory framework (
ExternalAccessory.framework) provides
a conduit for communicating with accessories attached to any iOS-based device. App developers can use this conduit to integrate accessory-level features into their apps.
意思简单理解就是:
External Accessory Framework提供了配件连接iOS设备的通道。开发者可以通过它来开发连接配件的app。
配件可以通过30pin、蓝牙、USB的方式连接iOS设备。
下面就开始简单了解下External Accessory Framework都有些什么吧:
1. 它包含三个类:
EAAccessory
代表了一个单例的硬件配件对象。
EAAccessoryManager
管理所有连接到iPhone的配件。
EASession
定义了iPhone app与外部配件的连接和通道。
2. EAAccessory类
EAAccessory类的属性:
1) Boolean connected read-only 配件是否连接iPhone的标志
@property (nonatomic, readonly, getter = isConnected) BOOL connected
2) NSUInteger connectionID read-only 连接设备的配件唯一标识
@property (nonatomic, readonly) NSUInteger connectionID
EAAccessory Framework提供了可用配件的列表,所以要用NSArray来处理:
1 for (EAAccessory *accessory in _accessoryList) { 2 if ([disconnectedAccessory connectionID] == [accessory connectionID]) { 3 break; 4 } 5 disconnectedAccessoryIndex++; 6 }
3) id<EAAcessoryDelegate> delegate 定义了接收配件状态变化的notifications的对象
定义一个accController类
1 @interface accController : NSObject<EAAccessoryDelegate> { 2 EAAccessory *_accessory; 3 EASession *_session; 4 NSString *_protocolString; 5 } 6 (void)accessoryDidDisconnect : (EAAccessory *)accessory; 7 @end
4) NSString firmwareRevision read-only 固件版本信息,注意兼容性
@property (nonatomic, readonly) NSString *firmwareRevision
5) NNString hardwareRevision read-only 硬件版本信息,同上
@property (nonatomic, readonly) NSString *hardwareRevison
6) NSString manufacturer read-only 配件所属公司
@property (nonatomic, readonly) NSString *manufacturer
7) NSString modelNumber read-only 配件设备号
@property (nonatomic, readonly) NSString *modelNumber
8) NSString name read-only 配件名称,反馈给用户连接了正确的配件
@property (nonatomic, readonly) NSString *name
9) NSArray protocolStrings read-only protocols的名称,注意,跟connectionID对应,所以是一个NSArray的对象
@property (nonatomic, readonly) NSArray *protocolStrings
代码示例:
1 - (void)setupAccessoryController : (EAAccessory *)accessory withProtocolString : (NSString *)protocolString { 2 [_accessory release]; // 防止断开连接后重连不同配件 3 _accessory = [accessory retain]; 4 [_protocolString release]; 5 _protocolString = [protocolString copy]; 6 }
这段代码可以用在配件连接设备后来创建一个accessory controller对象。
调用个的方法:
1 [accessoryController setupAccessoryController : _selectedAccessory withProtocolString : [[_selectedAccessory protocolStrings] objectAtIndex : 0]]; // 只能连接一个设备
10) NSString serialNumber read-only 连接的配件序列号,每个配件唯一
@property (nonatomic, readonly) NSString *serialNumber
EAAccessory类中的常量:
EAConnectionIDNone 实质为0,无效的连接,通过与connectionID的比较,可以尝试重连配件或者提示用户断开配件重新连接设备。
这第一个类EAAccessory就先了解到这里。
相关文章推荐
- C++:向函数传递对象(对象、对象指针、对象引用)
- 循环移位操作
- Esper学习——Esper介绍
- 【Android成长之路】最常用和最难用的控件——ListView的浅谈(提升ListView 的运行效率)
- 将构造函数的作用域赋给新的对象
- Leetcode -- Sudoku Solver
- java面试题
- AutoLayout_1
- MongoDB 从0开始
- c语言中通过指针将数值赋值到制定内存地址
- linux——read指令
- ps 笔记
- 打字母游戏3
- MFC中使用opencv获取海康摄像头视频
- 大数能否被小数整除 ACM
- 10月24日与10月25日笔记题
- 在Javascript面向对象设计一
- 信息安全系统设计基础期中学习总结
- 智能车学习(六)——OLED屏幕使用
- Tomcat重启负载高问题定位