iOS 设备与外部配件(Lightning)通讯

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 设备与外部配件(Lightning)通讯相关的知识,希望对你有一定的参考价值。

参考技术A 前一段时间,做了给lightning耳机升级的软件,现在抽空将其记录下来。
因为该软件涉及到MFI认证,所以需要External Accessory Framework框架。External Accessory Framework提供了配件连接ios设备的通道。开发者可以通过它来开发连接配件的app。

下面就开始简单了解下External Accessory Framework都有些什么吧:

// close the session with the accessory.
- (void)closeSession

[[_session inputStream] close];
[[_session inputStream] removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[[_session inputStream] setDelegate:nil];
[[_session outputStream] close];
[[_session outputStream] removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[[_session outputStream] setDelegate:nil];

// asynchronous NSStream handleEvent method
- (void)stream:(NSStream *)aStream handleEvent: (NSStreamEvent)eventCode

switch (eventCode)
case NSStreamEventNone:
break;
case NSStreamEventOpenCompleted:
break;
case NSStreamEventHasBytesAvailable:
//TTSLOG(@"-----处理接收过来的数据包------");
[self _readData];
break;
case NSStreamEventHasSpaceAvailable:
[self _writeData];
break;
case NSStreamEventErrorOccurred:
//TTSLOG(@"----error-----");
break;
case NSStreamEventEndEncountered:
//TTSLOG(@"------end---------");
break;
default:
break;



4 ) 配件连接成功后获取配件对应的协议,创建一个accessory controller对象。
//注意:_selectedAccessory和PROTOCOLSTRING2协议要对应,不然是不会成功的;。
EADSessionController *_eaSessionController = [EADSessionController sharedController];

5 )打开session通讯
EADSessionController *sessionController = [EADSessionController sharedController];
_accessory = [sessionController accessory];
[sessionController openSession];
6 )最后就是向配件发送指令,相关指令就与硬件工程师协商。

对于External Accessory Framework框架就先了解到这里,如有不解或者错误的地方,欢迎指出。

以上是关于iOS 设备与外部配件(Lightning)通讯的主要内容,如果未能解决你的问题,请参考以下文章

是否可以访问苹果外部配件框架并与任何“为苹果制造”的设备一起使用?没有 API? [关闭]

如果我将“Lightning to USB Camera Adapter”与外部 USB 设备一起使用,是不是需要 MFi

将 iOS 设备与非 iOS 设备通信

iOS蓝牙配件最高速度?

iOS外接配件电源

是否可以在 iPAD 外部附件设备中添加以太网接口?