当前位置: 首页>JAVA>正文

手機如何連接外設,iOS 連接外設的幾種方式

手機如何連接外設,iOS 連接外設的幾種方式

?? ?聯系人:石虎 QQ:1224614774 ? 昵稱:?嗡嘛呢叭咪哄

? ? ? ? ? ? ? ? ? ? ? ? ?QQ群:807236138?? 群稱:?iOS 技術交流學習群

?

一、概念

? ? ? ?一般iOS開發者做APP開發大部分時候都是通過Http(s)請求跟后臺服務器打交道,做一些信息展示和用戶交互。很少涉及到去跟外部硬件設備連接的開發。隨著近年來車聯網和物聯網的興起,智能家居和智能硬件的逐步火熱,越來越多的app被開發出來,用來跟硬件設備進行來連接,獲取硬件相關信息展示或者發送指令控制硬件來提供服務。故本文就針對iOS的app如何跟外部設備進行連接通信這個問題跟大家交流一下。本文原創,歡迎轉載,轉載請注明出處,如有不正確的地方懇請各位看官指正。

QQ截圖20160803144821.png

可以分為三大類:

手機如何連接外設。第一類是通過網絡端口,建立Socket使用TCP/IP協議族進行通信,天然支持多通道,想要幾個通道就建幾個socket就行了。它主要有三種方式,第一種方式是Wi-Fi連接,優點是:簡單,不需要集成MFi芯片,只要對應的硬件有無線網卡,然后手機和硬件連接到同一個局域網中就可以使用socket通過網絡協議通信了。缺點也很明顯:(1)無線連接信號容易受到干擾,不太穩定,容易斷開;(2)如果硬件使用的場合沒有公共wifi,就需要手機自建熱點共享,硬件進行熱點接入,操作步驟較多,對用戶來說學習使用成本較高,并且熱點共享要求手機本身的數據移動網絡是穩定的,在沒有移動數據網絡信號的地方,熱點無法建立。

需要先打開個人熱點共享;

使用網絡端口的第三種方式是NCM,就是把USB端口虛擬成標準的網絡端口,然后手機和外設就能通過有線網絡直連了,可以理解成手機和外設通過一跟網線連起來了,然后就可以用socket通過TCP,UDP進行通信了。它的優點是:有線連接,非常穩定,帶寬足夠;也不依賴移動網絡信號;但是它的缺點就是:需要集成MFI芯片并進行MFI認證,有一定門檻。更變態的是這么好的一種方式,目前蘋果只提到可以在它自己的CarPlay使用,其他硬件并沒有說禁止或者允許使用。如果硬件使用NCM跟iOS系統的App通信,可能通過MFI認證是有風險的。

關于如何使用Socket進行TCP、UDP連接,推薦github上的開源項目CocoaAsyncSocket。

iOS App連接外部硬件的第二大類是EAP,全拼是External Accessory Protocol,外部設備協議。這個是蘋果推薦使用的外設連接方式。需要外設集成MFI芯片進行MFI認證。手機端開發相對簡單,只要集成 iOS系統提供的一個框架ExternalAccessory.framework,并且在info.plist中配置好協議字符串(Supported external accessory protocols),當iOS 設備通過USB線或者藍牙連接到對應硬件時,iOS系統會把符合MFI認證要求的外設抽象成了一個流對象,App通過指定的協議字符串來創建一個EASession類的實例來訪問到該流對象,就能通過NSInputStream和NSOutputStream跟硬件件進行通信了。它有兩種模式,一種是叫EASession的模式,它帶寬相對較低,但是允許同時通過多個協議字符串創建多個會話,也就是說直接支持多個通道;另外一種是Native Transport的模式,這種模式的優點是帶寬足夠大,理論值是100MB以上,但是不支持多通道,如果業務層需要支持多數據通道的話需要App自己進行通道的復用與拆分,并且Native Transport需要iPhone工作在USB host模式,硬件需要支持USB 模式切換。

關于如何使用EAP跟外部設備進行通信,可以參考蘋果官方的Demo進行入門和學習。

蘋果怎么連接外設,第三大類就是BLE,低功耗藍牙,是iOS7.0以后才支持的連接方式。它的優點是不需要集成MFI芯片做認證,功耗低,手機端開發也相對簡單,集成iOS系統提供的CoreBluetooth.framework就行。缺點是:帶寬很低,一般適合于只需要傳輸少量數據的場景。比如前兩年非常火爆的各種所謂智能硬件,像智能水杯,智能體重計,運動手環等,都是采用這種連接方式。

關于如何使用BLE進行硬件連接,可以參考本人在github的一個小開源項目(https://github.com/luoxubin/BlueTooth4.0)。另外本人自己業余時間也做過一個BLE連接外設的App-褲寶(名字有創意吧,褲子里的寶貝,是跟我另外兩個小伙伴一起做的創業項目,目前該項目黃了, 不過app還在線上,AppStore里搜索“褲寶”可以下載。

總結一下,圖中帶MFI字樣的表示該連接方式需要硬件集成MFi芯片,做MFi認證。關于蘋果的MFI認證,對iOS開發中來說其實是一個比較陌生并且繁瑣的topic,原因如下:

(1)網上鮮有資料,Google基本上查不到。 因為MFi認證是由硬件生產商主導進行的,蘋果首先對硬件生產商的實力(質量,信譽,生產規模)有很苛刻的要求,滿足要求的才有進行MFI認證的資格。滿足MFi認證資格要求的硬件生產商,提交了MFi產品計劃后才能得到蘋果MFi開發的官方文檔,這個文檔是帶水印的,不允許外泄;

(2)MFi認證周期很長,過程也很復雜;

(3)蘋果官方溝通渠道很窄,電話打不通,郵件回復不及時。

主機與外設之間的連接電路稱為。原文鏈接:http://www.cocoachina.com/bbs/read.php?tid-1689738.html

謝謝!!!

https://www.nshth.com/java/338545.html
>

相关文章:

  • 手機如何連接外設
  • 蘋果怎么連接外設
  • 主機與外設之間的連接電路稱為
  • 外設與主機的三種連接方式
  • 外設只能通過總線連接主機
  • 外設的io控制方式
  • 外設必須通過
  • 電腦外設連接圖示
  • 有一個解謎的有外星人的游戲,【Pygame小游戲】 史上最經典的外星人游戲 ,全面保障 勇敢去闖 (未解之謎)
  • 2020年2月編程語言排行榜:Java第一,Python出現下滑!
  • 開一家手機配件店怎么樣,手機配件實體店好做不_震驚!手機實體店,你不得不防的套路!
  • bld設計公司,BLE外設設計
  • 手機如何連接外設,iOS 連接外設的幾種方式
  • 三星手機換電池視頻教程,三星2016換電池教程
  • 機械設計制造畢業設計題目,機械專業夾具類畢業設計題目匯總/組合機床、車床撥叉、飛錘支架、連接座、倒擋撥叉、蓋、法蘭盤、銅襯軸套、心軸零件、曲軸箱零件、托板、發動
  • Shell基礎(四):字符串截取及切割、字符串初值的處理、基使用Shell數組、expect預期交互、使用正則表達式...
  • shell編程入門,shell基礎之04
  • 計算機基礎知識試題及答案(全),計算機序列類型和字典試題,計算機考試試題和資料
  • 新開店鋪怎么做推廣,淘寶新開店鋪沒有生意不會推廣的苦衷與心得
  • 如何注冊商標,給大家科普一下商標小知識沒注冊下來的商標,做吊牌,做包裝袋,發朋友圈廣告時千萬不能打R。將未注冊商標冒充注冊商標使用的,或者使用未注冊商標的,最高
  • 商標繳費后多久初步審核通過,商標注冊需要多久下證
  • 商標買賣,信用百度公司商標信息爬取
  • 商標檢索網站,中國商標網 -爬蟲
  • 應用商店上架app容易么,iOS App 上架App Store及提交審核(Appuploader)
  • app證書失效了怎么辦,iOS證書申請打包上傳App Store審核完整流程(7個步驟)
  • 銀行合并后,10萬億同業存款免繳存準 全面降準將推遲
  • kindle買8g還是32g,萬字長文!對比分析了多款存儲方案,KeeWiDB最終選擇自己來
  • java中的final關鍵字有哪些用法,Java: static,final,代碼塊 的詳解
  • 服務器反應慢及解決辦法,Linux服務器 大量的CLOSE_WAIT、TIME_WAIT解決辦法
  • wait for的用法,oracle for update wait 解析
  • 如何手動關閉close_wait,CLOSE_WAIT和TIME_WAIT
  • 渲染軟件哪個好用,Windows平臺OpenGL渲染視頻
  • 怎樣說代碼讓人聽不懂,RPA初級認證直通車,不懂代碼也能成為技術大佬
  • java快速開發平臺 開源,快上車!Java技術開發大廠直通車馬上啟動!
  • 架構師培訓,Java高級:java架構師成長直通車pan
  • 【淘寶開店教程】淘寶直通車常見問題講解
  • 《java架構師成長直通車》課程階段一學習筆記
  • 視頻教程-Java面試Offer直通車-Java