iOS - MFi 認證

一、MFi 認證

1.1 什麼是 MFi 認證

  • 蘋果 MFi 認證,是蘋果公司(Apple Inc.)對其受權配件廠商生產的外置配件的一種標識使用許可,是 Apple 公司 「Made for iOS」 的英文縮寫。html

    Bluetooth3

  • 市面上認證產品的顯著標識就是在包裝正面出現以下白底黑字的蘋果 MFi 受權 logo,如本文開頭圖片所示。蘋果公司容許受權廠商在產品包裝上印上受權標籤。有句話叫無商不奸,若是消費者擔憂生產商做假,未受權的硬件也偷偷貼上 MFi 的受權標籤,那麼能夠登陸蘋果的官方網站,進行查詢。以下圖ios

    Bluetooth4

1.2 爲何要作 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,其中 EAP 是蘋果官方推薦的跟外設鏈接的方式。只有通過 MFi 認證的外設才能使用 EAP 跟 App 進行通訊。app

1.3 如何作 MFi 認證

  • MFi 認證的流程比較複雜,能夠概括總結爲三個部分,以下圖所示框架

    Bluetooth5

  • 其中黃色背景標註的部分是可能跟 iOS App 開發者相關的。其餘部分則都是由硬件生產商主導進行的,做爲 iOS 開發人員並不須要參與。工具

  • 一、申請人提交申請資料學習

    • 首先,收集公司資料信息,這些資料主要包括了認證負責人聯繫信息,企業狀況介紹,公司組織架構、企業網站,物料品質控制以及 ISO 體系證書等資料。而後是在蘋果 MFi 官網 上進行註冊,並提交第一步收集到的公司資料,進行帳號申請。測試

    • 接下來蘋果會進行 MFi 體系審覈。這個是很是關鍵的一個步驟。主要考察公司對 MFi 芯片的管理體系,看公司是否有規範的流程和系統來管理 MFi 芯片,能有效防止轉售芯片或者挪用芯片(把芯片用到未經過 MFi 認知的項目上),蘋果會安排專人或者代理公司來抽查。網站

    • 若是 MFi 體系審覈過了,蘋果還會對公司其餘狀況進行考察,來評估該公司是否知足 MFi 會員的資格。審覈的標準主要看公司相關資質,是否有較大的生產規模;是否擁有自主品牌;品牌在業內是否有較高的地位(主要表現爲各種榮譽);是否曾爲其餘國際知名企業供貨;研發人員是否達到蘋果要求的人數等,申請者必定保證申報資料的真實性,蘋果公司都會一一覈實。

    • 若是這些條件都知足,恭喜你公司成爲了 MFi 會員,可以有資格購買樣品芯片,而且拿到蘋果提供的 MFi 官方開發文檔,該文檔的每一頁都是帶有申請人姓名水印的,禁止對外公開,若是被發現,有可能會被取消 MFi 會員資格。聽說大部分的企業都會被卡在會員資格審覈這一步。

  • 二、提交產品計劃,研發和自測

    • 若是你的公司是屬於那幸運的那一小部分經過了 MFi 會員資格審覈,拿到了蘋果的 MFi 研發官方文檔,也購買了 MFi 樣品芯片,那麼就能夠提交產品計劃,進行產品研發和自測了。

    • 提交產品計劃是很是關鍵的一步,須要根據要研發的公司產品的形態、所用技術方案和須要支持的 iOS 設備、iOS 的相關信息都進行詳細的描述,其中比較重要信息有。

    • 1)附件概覽(Accessory Overview)

      Bluetooth6

      • 技術方案(Technology)若是你是作支持 CapPlay 的車機,那麼就選擇 CarPlay,不然都應該選擇 iAP;若是你的硬件須要跟 iPhone 鏈接,而且處理相關業務,而不只僅是充電線或者數據線,那麼在 Components 裏應該選擇 Authentication coprocessor.
    • 2)固件和硬件(Firmware & Hardware)

      Bluetooth7

      • 如今全部的 MFi 認證的硬件都須要支持 iAP2 協議,因此必需要選 iAP2 或者同時支持 iAP2 和 iAP1。而後外設硬件跟蘋果設備是如何通訊的,是使用 USB 的 Host 模式,還 USB 的 Devices 模式,仍是串口或者藍牙,這個須要根據產品的需求、特性進行選擇。
    • 3)選擇硬件所支持的 iAP2 的特性

      Bluetooth8

    • 4)選擇所支持的蘋果設備型號。

      Bluetooth9

      • 根據產品的設計選擇所須要支持的蘋果設備型號,包括 iPad,iPhone 和 iPod 的各類型號。
    • 5)App 相關的信息

      Bluetooth10

      • 這部分也是 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 進行入門和學習。

    • 產品研發完成後須要進行 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 美金的測試費用,所寄去測試的硬件測試樣品蘋果也是不會寄回來的。

二、NCM 將只能用於 CarPlay

  • 最近 MFi 開發的蘋果官方文檔更新到 R25(《Accessory Interface Specification R25.pdf》)了,相比以前的版本,在 CarPlay 的章節中多了這樣一句話 「Accessories must not use the NCM interface for anything other than CarPlay」,以下圖所示:

    Bluetooth11

  • 這意味着什麼呢? 意味着除了 CarPlay,後面全部其餘跟 iPhone 鏈接的外設都不能使用 NCM 的方式跟 iPhone 上的 App 進行鏈接和通訊了。NCM 只能用於 CarPlay,不然外設將沒法經過 MFi 認證。

    Bluetooth12

  • 若是你的外設是採用的 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 的把控。

相關文章
相關標籤/搜索