關於MFi認證你所必須要知道的事情
MFiLogo
前面我寫了一篇文章《iOS App連線外設的幾種方式》,其中EAP和NCM是都需要做MFi認證。對於蘋果的MFI認證,對iOS開發的同學來說其實是一個比較陌生並且繁瑣的topic,因為網上資料確實很少,百度Google幾乎都查不到啥資料,而且MFi認證門檻比較高,流程比較複雜,週期很長。蘋果對外提供的溝通渠道也不順暢,郵件發過去杳無音信,電話從來都打不通。
本人最近兩年都在做百度CarLife這個手機車機互聯的產品,涉及到iOS app跟車機硬體的連線,所以對MFi認證略有接觸和了解,今天在不涉及公司專案技術方案和細節前提下,跟大家聊一聊我所認識的MFi認證,希望對相關的iOS開發同學有所幫助。
什麼是MFi認證?
蘋果MFi認證,是蘋果公司(Apple Inc.)對其授權配件廠商生產的外接配件的一種標識使用許可,是apple公司 “Made for iOS”的英文縮寫。
市面上認證產品的顯著標識就是在包裝正面出現如下白底黑字的蘋果MFi授權logo,如本文開頭圖片所示。蘋果公司允許授權廠商在產品包裝上印上授權標籤。有句話叫無商不奸,如果消費者擔心生產商作假,未授權的硬體也偷偷貼上MFi的授權標籤,那麼可以登入蘋果的官方網站,進行查詢。如下圖
MFi 官方查詢網站
為什麼要做MFi認證?
從蘋果角度來看,為了更好的鞏固蘋果的生態圈,只有集成了有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 (請參考我之前寫過的《iOS App連線外設的幾種方式》),其中EAP 是蘋果官方推薦的跟外設連線的方式。只有經過MFi認證的外設才能使用EAP跟app進行通訊。
如何做MFi認證?
MFi認證的流程比較複雜,可以歸納總結為三個部分,如下圖所示,
MFi認證流程
其中黃色背景標註的部分是可能跟iOS App開發者相關的,我會重點介紹。其他部分則都是由硬體生產商主導進行的,我作為iOS 開發人員並不需要參與,不過我也會跟大家分享一些我所瞭解的資訊。如果有什麼不正確的地方也請相關老司機指正交流。
一、申請人提交申請資料
首先,收集公司資料資訊,這些資料主要包括了認證負責人聯絡資訊,企業情況介紹,公司組織架構、企業網站,物料品質控制以及ISO體系證書等資料。然後是在蘋果MFi官網(mfi.apple.com)上進行註冊,並提交第一步收集到的公司資料,進行賬號申請。
接下來蘋果會進行MFi體系稽核。這個是非常關鍵的一個步驟。 主要考察公司對MFi晶片的管理體系,看公司是否有規範的流程和系統來管理MFi晶片,能有效防止轉售晶片或者挪用晶片(把晶片用到未通過MFi認知的專案上),蘋果會安排專人或者代理公司來抽查。
如果MFi體系稽核過了,蘋果還會對公司其他情況進行考察,來評估該公司是否滿足MFi會員的資格。稽核的標準主要看公司相關資質,是否有較大的生產規模;是否擁有自主品牌;品牌在業內是否有較高的地位(主要表現為各類榮譽);是否曾為其他國際知名企業供貨;研發人員是否達到蘋果要求的人數等,申請者一定保證申報資料的真實性,蘋果公司都會一一核實。
如果這些條件都滿足,恭喜你公司成為了MFi會員,能夠有資格購買樣品晶片,並且拿到蘋果提供的MFi官方開發文件,該文件的每一頁都是帶有申請人姓名水印的,禁止對外公開,如果被發現,有可能會被取消MFi會員資格。據說大部分的企業都會被卡在會員資格稽核這一步。
二、提交產品計劃,研發和自測
如果你的公司是屬於那幸運的那一小部分(據說是5%,本人道聽途說的,沒有官方資料支撐)通過了MFi會員資格稽核,拿到了蘋果的MFi研發官方文件,也購買了MFi樣品晶片,那麼就可以提交產品計劃,進行產品研發和自測了。
提交產品計劃是非常關鍵的一步,需要根據要研發的公司產品的形態、所用技術方案和需要支援的iOS裝置、iOS的相關資訊都進行詳細的描述,其中比較重要資訊有。
(1)附件概覽(Accessory Overview)
附件概覽
技術方案(Technology)如果你是做支援CapPlay的車機,那麼就選擇CarPlay,否則都應該選擇iAP;如果你的硬體需要跟iPhone連線,並且處理相關業務,而不僅僅是充電線或者資料線,那麼在Components裡應該選擇Authentication coprocessor.
(2)韌體和硬體(Firmware & Hardware)
韌體和硬體資訊
現在所有的MFi認證的硬體都需要支援iAP2協議,所以必須要選iAP2或者同時支援iAP2和iAP1.然後外設硬體跟蘋果裝置是如何通訊的,是使用USB的Host模式,還USB的Devices模式,還是串列埠或者藍芽,這個需要根據產品的需求、特性進行選擇。
(3)選擇硬體所支援的iAP2的特性
iAP2特性
(4)選擇所支援的蘋果裝置型號。
根據產品的設計選擇所需要支援的蘋果裝置型號,包括iPad,iPhone和iPod的各種型號。
(5)App相關的資訊
App相關資訊
這部分也是iOS開發者需要重點關注的部分,包括App的版本號,BundleID和協議字串以及iOS App的主要功能特性描述,這部分資訊需要跟最後送MFi稽核時附帶的App測試包的資訊保持一致。提交了產品計劃之後,就可以拿到PPID (Product Plan ID).這個PPID也是跟iOS App開發者需要關注的。當App開發完成,提交AppStore上線時,需要在版本稽核備註資訊裡帶上這個PPID,否則稽核是過不了的.
接下來就可以進行產品研發了。主要是硬體生成商需要根據蘋果提供的開發文件進行硬體和驅動認證程式的開發。而iOS App開發者則主要是需要成 iOS系統提供的一個系統框架ExternalAccessory.framework,並且在info.plist中配置好協議字串(Supported external accessory protocols)。當iOS 裝置通過USB線或者藍芽連線到對應硬體時,iOS系統會把符合MFI認證要求的外設抽象成了一個流物件,App通過指定的協議字串來建立一個EASession類的例項來訪問到該流物件,就能通過NSInputStream和NSOutputStream跟硬體件進行通訊了。這部分功能實現可以參考蘋果官方的EADemo(https://developer.apple.com/library/ios/samplecode/EADemo/Introduction/Intro.html)進行入門和學習。
產品研發完成後需要進行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認證是有硬體生成商主導進行的針對硬體的認證,我作為iOS 開發者並沒有機會直接參與過MFi認證,所以今天主要是跟大家聊了一下我所瞭解到的MFi認證的相關內容,如果有什麼不正確的地方歡迎各位老司機指正交流。後面有時間的時候,我計劃再寫一篇文章,介紹外設硬體如何通過MFi晶片跟iOS系統進行MFi安全認證,以及外設跟iOS App通訊的一個具體流程,有興趣的同學歡迎關注我的簡書,謝謝大家的寶貴時間。