了解External Accessory Framework之EAAccessory

来源:互联网 发布:乐视tv下载软件 编辑:程序博客网 时间:2024/05/21 12:45
最近要做MFI配件的app,找了一下需要External Accessory Framework框架,但是相关的文章貌似不多,所以记录下自己的所学到的一些内容与大家分享。

  那么什么是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 delegate 定义了接收配件状态变化的notifications的对象

               定义一个accController类              

1 @interface accController : NSObject {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就先了解到这里。

转---

0 0
原创粉丝点击