概述
和外设交互需要外设本身的信息,这意味着你必须从硬件厂商获取。然后,你可以使用 External Accessory框架的类来创建应用与硬件的桥梁。
在你的项目中导入 ExternalAccessory.framework
为了使用External Accessory框架,你必须添加ExternalAccessory.framework到你的项目,并且链接到相关的targets。访问framework中的类,需要在源文件头引入<
声明你的应用所支持的协议
应用想要和外设交互必须在Info.plist中声明所支持的协议。声明协议能够使操作系统知道在设备连接的时候你的应用可以启动。如果操作系统不知道哪个应用支持所连接的设备,它将会启动App store,并指出可以使用设备的应用。
UISupportedExternalAccessoryProtocols键,这个键包含了一个字符串数组,用来说明所支持的协议。你的应用可以包含任何数量的协议,并且无顺序要求。操作系统并不使用这个字符串数组来指名你的应用应该选择哪个协议,而只是声明你的应用是否可以和连接的设备交互。和外设交互使用的协议取决于你的代码。
和外设交互
应用和外设交互需要创建一个EASession对象,用来管理外设的动作。Sesion对象通过系统底层工作来在应用和外设之间传输数据包。一旦连接创建,应用的数据传输通过NSInputStream和NSOutputStream对象,这两个对象在Sesion对象中提供。接收外设的数据,我们需要使用一个自定义委托对象监听的input stream。发送数据给外设,需要向outstream写入字节包。数据包的格式取决于外设交互时使用的协议。
1.当设备连接、认证并准备好跟应用交互,框架将发送 这个通知。
EAAccessoryDidDisconnectNotification
你可以通过注册接收这些通知,所有通知都包含了相关的设备的信息。
除了从通知中心收到通知之外,应用可以赋值一个delegate去响应EAAccessory对象和被通知一些变化。Delegate必须遵循协议,这个协议包含了一个可选方法:,你可以用此方法来接收断开通知而不用在刚开始设定一个通知监听者。
如果当通知到达的时候你的应用在后台,那么通知将会放入一个队列。当程序重新开始运行。通知队列将把通知交给应用。通知也合并和过滤尽可能消除任何无关紧要的事件。例如,如果一个外设在应用休眠期间连接并随后断开连接,你的应用程序将最终没有收到任何指示。