当前位置: 首页>C++>正文

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

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

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


? ? ? 如上圖所示,我把iOS App連接外設的常用方式總結了一下,可以分為三大類:
? ? ? ?第一類是通過網絡端口,建立Socket使用TCP/IP協議族進行通信,天然支持多通道,想要幾個通道就建幾個socket就行了。它主要有三種方式,第一種方式是Wi-Fi連接,優點是:簡單,不需要集成MFi芯片,只要對應的硬件有無線網卡,然后手機和硬件連接到同一個局域網中就可以使用socket通過網絡協議通信了。缺點也很明顯:(1)無線連接信號容易受到干擾,不太穩定,容易斷開;(2)如果硬件使用的場合沒有公共wifi,就需要手機自建熱點共享,硬件進行熱點接入,操作步驟較多,對用戶來說學習使用成本較高,并且熱點共享要求手機本身的數據移動網絡是穩定的,在沒有移動數據網絡信號的地方,熱點無法建立。
使用網絡端口的第二種方式是USB熱點共享,這個其實跟Wi-Fi中的熱點共享非常類似,也不需要集成MFI芯片,區別就是USB線共享熱點,走的是有線,不容易受到干擾,更穩定,而且iPhone可以邊使用可以邊充電;缺點也是操作步驟比較復雜,需要先打開個人熱點共享;
使用網絡端口的第三種方式是NCM,就是把USB端口虛擬成標準的網絡端口,然后手機和外設就能通過有線網絡直連了,可以理解成手機和外設通過一跟網線連起來了,然后就可以用socket通過TCP,UDP進行通信了。它的優點是:有線連接,非常穩定,帶寬足夠;也不依賴移動網絡信號;但是它的缺點就是:需要集成MFI芯片并進行MFI認證,有一定門檻。蘋果怎么連接外設,更變態的是這么好的一種方式,目前蘋果只提到可以在它自己的CarPlay使用,其他硬件并沒有說禁止或者允許使用。如果硬件使用NCM跟iOS系統的App通信,可能通過MFI認證是有風險的。
關于如何使用Socket進行TCP、UDP連接,推薦github上的開源項目CocoaAsyncSocket(https://github.com/robbiehanson/CocoaAsyncSocket
iOS App連接外部硬件的第二大類是EAP,全拼是External Accessory Protocol ,外部設備協議。這個是蘋果推薦使用的外設連接方式。需要外設集成MFI芯片進行MFI認證。外設只能通過總線連接主機,手機端開發相對簡單,只要集成?iOS系統提供的一個框架ExternalAccessory.framework,并且在info.plist中配置好協議字符串(Supported external accessory protocols),當iOS 設備通過USB線或者藍牙連接到對應硬件時,iOS系統會把符合MFI認證要求的外設抽象成了一個流對象,App通過指定的協議字符串來創建一個EASession類的實例來訪問到該流對象,就能通過NSInputStreamNSOutputStream跟硬件件進行通信了。它有兩種模式,一種是叫EASession的模式,它帶寬相對較低,但是允許同時通過多個協議字符串創建多個會話,也就是說直接支持多個通道;另外一種是Native Transport的模式,這種模式的優點是帶寬足夠大,理論值是100MB以上,但是不支持多通道,如果業務層需要支持多數據通道的話需要App自己進行通道的復用與拆分,并且Native Transport需要iPhone工作在USB host模式,硬件需要支持USB 模式切換。
? ? ? ?關于如何使用EAP跟外部設備進行通信,可以參考蘋果官方的demo(https://developer.apple.com/library/ios/samplecode/EADemo/Introduction/Intro.html)進行入門和學習。


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

https://www.nshth.com/cplus/338550.html
>

相关文章:

  • 手機如何連接外設
  • 蘋果怎么連接外設
  • 外設只能通過總線連接主機
  • 外設的io控制方式
  • 主機與外設之間的連接電路稱為
  • 外設必須通過
  • 電腦外設連接圖示
  • 外設與計算機的連接關系
  • 樹莓派的控制方法,第二篇 樹莓派基本外設基礎篇
  • 手機如何連接外設,iOS連接外設的幾種方式
  • switch可以外接鍵鼠嗎,別再給手機外接OTG鍵鼠玩刺激戰場了:其實還能這樣操作
  • [阿發你好]C/C++學習指南
  • 輸入法哪個最好用,wsl2中安裝中文輸入法
  • 字符串中引入變量方法,字符串處理、變量初始值處理、擴展的腳本技巧、正則表達式
  • 某計算機內存容量是512kb,某計算機主存容量為512kb,Cache容量為16kb,每塊有16個字,每字32位。 (1...
  • 中國工商網商標查詢,工商局爬蟲 商標網爬蟲
  • iOS真機調試TestFlight安裝及提交App Store審核教程
  • 蘋果app上架流程,小白如何在ios中安裝ios上架
  • 蘋果彈出提交表格是什么,蘋果TestFlight測試操作圖文教程(測試后提交App Store審核)
  • 四門外語傍身:外語,讓我的大學如此完美
  • D3D Surface/Texture SDL DDraw渲染視頻的區別和疑問
  • 手機VR播放器,Android VR Player(全景視頻播放器) [10]: VR全景視頻渲染播放的實現(exoplayer,glsurfaceview,o
  • Qt渲染視頻常見問題(視頻渲染窗口上子窗口設置透明出現陰影問題、主窗口縮放導致視頻渲染窗口部分出現視頻閃爍問題)
  • 視頻解析網站源碼,ijkplayer源碼分析 視頻渲染流程
  • 一分鐘的視頻渲染要多久,基礎教程|如何在數分鐘時間內渲染超清精美視頻?
  • Metal(六) 案例之視頻文件的渲染
  • flutter開發小程序,最強整理!寫給程序員的Flutter詳細教程,大廠直通車!
  • c++黑客編程揭秘與防范,C/C++截獲騰訊QQ網絡聊天系統內容和登錄密碼,教你做一個黑客!
  • 支付行業具體做什么,做支付需要了解哪些行業知識
  • 5大底層邏輯,淺談HyperLogLog底層算法邏輯
  • c++實現復數的加減乘除,【C++】輔助C++計算復數(代碼解釋的很清楚)
  • nlogn的算法有哪些,算法運行時間1、logN、N、NlogN 、N^2、N^3、2^n之間的比較
  • 開源圖片庫,幾種常用圖像處理開源庫簡介及使用總結
  • 圖像處理和計算機視覺,《圖像處理與計算機視覺算法及應用》讀后感
  • gps定位,側邊欄固定定位到版心兩側
  • css版心怎么設置,[css]版心和布局流程
  • 瀏覽器多個窗口怎么設置在一個頁面,網頁多種版心適應多屏幕技巧
  • 前端學習之版心和布局流程