苹果 MFi 认证,是苹果公司(Apple Inc.)对其受权配件厂商生产的外置配件的一种标识使用许可,是 Apple 公司 “Made for iOS” 的英文缩写。html
市面上认证产品的显著标识就是在包装正面出现以下白底黑字的苹果 MFi 受权 logo,如本文开头图片所示。苹果公司容许受权厂商在产品包装上印上受权标签。有句话叫无商不奸,若是消费者担忧生产商做假,未受权的硬件也偷偷贴上 MFi 的受权标签,那么能够登陆苹果的官方网站,进行查询。以下图ios
从苹果角度来看,为了更好的巩固苹果的生态圈,只有集成了有 MFi 芯片,才能跟 iPhone、iPod,iPad 进行链接通讯。而只有通过了 MFi 认证的企业才能批量购买 MFi 芯片,而且 MFi 芯片的供销链条都有很严格的监督管理,因此这样苹果能够严格控制只有那些知足苹果规范和要求的外设才能加入到苹果生态圈。网络
从生产厂商来看,通过苹果官方受权,配件产品能完美兼容苹果智能设备;提交 MFi 认证过程当中,硬件设备须要通过苹果要求的 ATS 自测以及苹果的严格测试,产品质量更有保证;消费者也更加信任通过了 MFi 认证受权的配件;最后成功得到 MFi 受权这也成为技术与质量实力的一种标志,由于 MFi 认证经过率仅 2%,其中大部分企业由于申请资格不符合直接被拒绝。架构
从 iOS 开发人员来看,MFi 认证是由硬件生产商主导进行申请的,是苹果对外设配件的一种认证和受权。可是不少外设跟苹果进行链接,并不仅是跟 iOS 设备硬件或者 iOS 系统配合就能够完成对应的功能(好比充电、CarPlay、播放 iPod 音乐(A2DP)、接听蓝牙电话(HPF)或者提供 GPS 输入源等)。不少时候为了实现特定的需求,须要由 iOS App 的配合,由 iOS App 跟对应外设进行链接和通讯,传输相关的控制命令对外设进行控制,或者传输相关的外设数据进行展现。iOS App 跟外设的链接方式有网络、EAP 和 BLE,其中 EAP 是苹果官方推荐的跟外设链接的方式。只有通过 MFi 认证的外设才能使用 EAP 跟 App 进行通讯。app
MFi 认证的流程比较复杂,能够概括总结为三个部分,以下图所示框架
其中黄色背景标注的部分是可能跟 iOS App 开发者相关的。其余部分则都是由硬件生产商主导进行的,做为 iOS 开发人员并不须要参与。工具
一、申请人提交申请资料学习
首先,收集公司资料信息,这些资料主要包括了认证负责人联系信息,企业状况介绍,公司组织架构、企业网站,物料品质控制以及 ISO 体系证书等资料。而后是在苹果 MFi 官网 上进行注册,并提交第一步收集到的公司资料,进行帐号申请。测试
接下来苹果会进行 MFi 体系审核。这个是很是关键的一个步骤。主要考察公司对 MFi 芯片的管理体系,看公司是否有规范的流程和系统来管理 MFi 芯片,能有效防止转售芯片或者挪用芯片(把芯片用到未经过 MFi 认知的项目上),苹果会安排专人或者代理公司来抽查。网站
若是 MFi 体系审核过了,苹果还会对公司其余状况进行考察,来评估该公司是否知足 MFi 会员的资格。审核的标准主要看公司相关资质,是否有较大的生产规模;是否拥有自主品牌;品牌在业内是否有较高的地位(主要表现为各种荣誉);是否曾为其余国际知名企业供货;研发人员是否达到苹果要求的人数等,申请者必定保证申报资料的真实性,苹果公司都会一一核实。
若是这些条件都知足,恭喜你公司成为了 MFi 会员,可以有资格购买样品芯片,而且拿到苹果提供的 MFi 官方开发文档,该文档的每一页都是带有申请人姓名水印的,禁止对外公开,若是被发现,有可能会被取消 MFi 会员资格。听说大部分的企业都会被卡在会员资格审核这一步。
二、提交产品计划,研发和自测
若是你的公司是属于那幸运的那一小部分经过了 MFi 会员资格审核,拿到了苹果的 MFi 研发官方文档,也购买了 MFi 样品芯片,那么就能够提交产品计划,进行产品研发和自测了。
提交产品计划是很是关键的一步,须要根据要研发的公司产品的形态、所用技术方案和须要支持的 iOS 设备、iOS 的相关信息都进行详细的描述,其中比较重要信息有。
1)附件概览(Accessory Overview)
2)固件和硬件(Firmware & Hardware)
3)选择硬件所支持的 iAP2 的特性
4)选择所支持的苹果设备型号。
5)App 相关的信息
接下来就能够进行产品研发了。主要是硬件生成商须要根据苹果提供的开发文档进行硬件和驱动认证程序的开发。而 iOS App 开发者则主要是须要集成 iOS 系统提供的一个系统框架 ExternalAccessory.framework,而且在 info.plist 中配置好协议字符串(Supported external accessory protocols)。当 iOS 设备经过 USB 线或者蓝牙链接到对应硬件时,iOS 系统会把符合 MFi 认证要求的外设抽象成了一个流对象,App 经过指定的协议字符串来建立一个 EASession 类的实例来访问到该流对象,就能经过 NSInputStream 和 NSOutputStream 跟硬件件进行通讯了。这部分功能实现能够参考苹果官方的 EADemo 进行入门和学习。
产品研发完成后须要进行 ATS(Accessory Test System)自测,并提供自测报告。ATS 自测苹果会提供 ATS Box 的测试工具和软件,主要是针对硬件进行电气特性相关的测试,包括各个节点的电压电流值是否知足苹果要求,而后传输带宽是否稳定,是否达到苹果要求等等。
自测完成以后就能够把硬件和所配套的软件(iOS App 的 ipa 安装包)送到苹果指定的测试实验室进行认证测试。iOS 开发者在这个步骤须要关注的是如何打包 ipa 包。由于若是直接用开发证书打包,那么苹果测试人员的 iPhone 不在你开发证书的设备列表中,是没法安装的。若是用企业证书打包的话,可能 AppStore 发布证书对应的 bundleid 跟企业证书的 bundleid 不一致,因此也不可行。因此推荐的作法是,等到产品研发完成和自测以后,就带上产品计划中拿到的 PPID,提交 AppStore 进行审核。等审核经过以后,就能够直接从 AppStore 下载对应的 ipa 安装包,配合硬件一块儿送 MFi 认证测试了。
三、测试审核和批量生产
这个阶段也是硬件生产商主导进行的,跟 iOS app 开发者关系不大。当硬件的 MFi 认证送审经过以后,还须要对产品的包装也提交认证和审核。审核经过以后,就能够得到苹果受权进行 MFi 芯片的批量购买,而后根据销售计划进行硬件的批量生产和销售了。
整个 MFi 认证的周期大概须要 3 个月到半年的时间,而且每次提交认证测试都须要支付一笔 600 美金的测试费用,所寄去测试的硬件测试样品苹果也是不会寄回来的。
最近 MFi 开发的苹果官方文档更新到 R25(《Accessory Interface Specification R25.pdf》)了,相比以前的版本,在 CarPlay 的章节中多了这样一句话 “Accessories must not use the NCM interface for anything other than CarPlay”,以下图所示:
这意味着什么呢? 意味着除了 CarPlay,后面全部其余跟 iPhone 链接的外设都不能使用 NCM 的方式跟 iPhone 上的 App 进行链接和通讯了。NCM 只能用于 CarPlay,不然外设将没法经过 MFi 认证。
若是你的外设是采用的 NCM 方式跟 App 进行通讯,而且目前尚未经过 MFi 认证,须要尽快调整方案,建议改为 EAP(External Accessory Protocol)链接方式,这个是苹果官方推荐链接方式。不然,确定是过不了 MFi 认证的。
若是你的外设采用的 NCM 方式跟 App 进行通讯,而且已经通过了 MFi 认证。那么能够保持现状,不用担忧。有人会说苹果会不会后面升级 iOS 系统时,在某个版本中直接在系统底层作限制,若是不是 CarPlay 模式就不能切出 NCM 的端口? 这种担忧,小编认为是多余的,由于苹果也是最新的 Spec 才加入这种限制,意味着以前确定有不少外设采用 NCM 而且经过了苹果的 MFi 认证,苹果须要保证 iPhone 升级 iOS 系统后也能兼容之前的外设。
NCM 按理说是一种很是标准的 USB 传输方式,它把 USB 端口虚拟成标准的网络端口,具备带宽高、自然支持多通道等优势,那苹果为何要作出这种限制呢?小编猜想仍是跟苹果想要严格把控 iOS 系统生态有关。
由于若是采用 EAP,那么对应的 App 就必须集成苹果的 EA 框架(ExternalAccessory.framework),提交 AppStore 审核时,AppStore 经过代码扫描就能扫描到 App 使用到了 EA 框架,知道该 App 须要跟外设进行通讯,就须要 App 必须提供对应外设的 PPID(Product Plan ID),若是不能提供 PPID 就会被 AppStore 拒绝。这样就能更严格控制 iOS 系统生态,外设和对应的 App 都在苹果的控制范围以内。
若是 App 采用 NCM 的方式跟外设通讯,在 App 层面来讲 NCM 就是标准的网络通讯,使用 TCP/IP 协议。App 提交 AppStore 审核时,若是不明说这个 App 能够链接某种 MFi 外设,苹果是彻底不知道的,这样苹果就在必定程度上丢失对 App 的把控。