iOS App連接外設(shè)的幾種方式

iOS development


此文剛剛上CocoaChina的首頁了“iOS連接外設(shè)的幾種方式”鹃骂,歡迎圍觀

//add by 云峰小羅 ?2016.08.04

? ? ? 一般iOS開發(fā)者做APP開發(fā)大部分時候都是通過Http(s)請求跟后臺服務(wù)器打交道,做一些信息展示和用戶交互立镶。很少涉及到去跟外部硬件設(shè)備連接的開發(fā)师逸。隨著近年來車聯(lián)網(wǎng)和物聯(lián)網(wǎng)的興起司倚,智能家居和智能硬件的逐步火熱,越來越多的app被開發(fā)出來篓像,用來跟硬件設(shè)備進行來連接动知,獲取硬件相關(guān)信息展示或者發(fā)送指令控制硬件來提供服務(wù)。故本文就針對iOS的app如何跟外部設(shè)備進行連接通信這個問題跟大家交流一下员辩,如有不正確的地方懇請各位看官指正盒粮。本文原創(chuàng),歡迎轉(zhuǎn)載奠滑,轉(zhuǎn)載請注明出處丹皱。

如上圖所示,我把iOS App連接外設(shè)的常用方式總結(jié)了一下宋税,可以分為三大類:

iOS App連接外部硬件方式第一類是通過網(wǎng)絡(luò)端口

建立Socket使用TCP/IP協(xié)議族進行通信种呐,天然支持多通道,想要幾個通道就建幾個socket就行了弃甥。它主要有三種方式爽室,第一種方式是Wi-Fi連接,優(yōu)點是:簡單淆攻,不需要集成MFi芯片阔墩,只要對應(yīng)的硬件有無線網(wǎng)卡,然后手機和硬件連接到同一個局域網(wǎng)中就可以使用socket通過網(wǎng)絡(luò)協(xié)議通信了瓶珊。缺點也很明顯:(1)無線連接信號容易受到干擾啸箫,不太穩(wěn)定,容易斷開伞芹;(2)如果硬件使用的場合沒有公共wifi忘苛,就需要手機自建熱點共享,硬件進行熱點接入唱较,操作步驟較多扎唾,對用戶來說學(xué)習(xí)使用成本較高,并且熱點共享要求手機本身的數(shù)據(jù)移動網(wǎng)絡(luò)是穩(wěn)定的南缓,在沒有移動數(shù)據(jù)網(wǎng)絡(luò)信號的地方胸遇,熱點無法建立。

使用網(wǎng)絡(luò)端口的第二種方式是USB熱點共享汉形,這個其實跟Wi-Fi中的熱點共享非常類似纸镊,也不需要集成MFI芯片倍阐,區(qū)別就是USB線共享熱點,走的是有線逗威,不容易受到干擾峰搪,更穩(wěn)定,而且iPhone可以邊使用可以邊充電凯旭;缺點也是操作步驟比較復(fù)雜概耻,需要先打開個人熱點共享;

使用網(wǎng)絡(luò)端口的第三種方式是NCM尽纽,就是把USB端口虛擬成標(biāo)準的網(wǎng)絡(luò)端口,然后手機和外設(shè)就能通過有線網(wǎng)絡(luò)直連了童漩,可以理解成手機和外設(shè)通過一跟網(wǎng)線連起來了弄贿,然后就可以用socket通過TCP,UDP進行通信了矫膨。它的優(yōu)點是:有線連接差凹,非常穩(wěn)定,帶寬足夠侧馅;也不依賴移動網(wǎng)絡(luò)信號危尿;但是它的缺點就是:需要集成MFI芯片并進行MFI認證,有一定門檻馁痴。更變態(tài)的是這么好的一種方式谊娇,蘋果只允許它自己的CarPlay使用,如果硬件使用NCM跟其他app通信罗晕,是不能通過MFI認證的济欢。

關(guān)于如何使用Socket進行TCP、UDP連接小渊,推薦github上的開源項目CocoaAsyncSocket

iOS App連接外部硬件方式的第二大類是EAP

EAP全拼是External Accessory Protocol 法褥,外部設(shè)備協(xié)議。這個是蘋果推薦使用的外設(shè)連接方式酬屉。需要外設(shè)集成MFI芯片進行MFI認證半等。手機端開發(fā)相對簡單,只要集成iOS系統(tǒng)提供的一個框架ExternalAccessory.framework呐萨,并且在info.plist中配置好協(xié)議字符串(Supported external accessory protocols)杀饵,當(dāng)iOS 設(shè)備通過USB線或者藍牙連接到對應(yīng)硬件時,iOS系統(tǒng)會把符合MFI認證要求的外設(shè)抽象成了一個流對象谬擦,App通過指定的協(xié)議字符串來創(chuàng)建一個EASession類的實例來訪問到該流對象凹髓,就能通過NSInputStream和NSOutputStream跟硬件件進行通信了。它有兩種模式怯屉,一種是叫EASession的模式蔚舀,它帶寬相對較低饵沧,但是允許同時通過多個協(xié)議字符串創(chuàng)建多個會話,也就是說直接支持多個通道赌躺;另外一種是Native Transport的模式狼牺,這種模式的優(yōu)點是帶寬足夠大,理論值是100MB以上礼患,但是不支持多通道是钥,如果業(yè)務(wù)層需要支持多數(shù)據(jù)通道的話需要App自己進行通道的復(fù)用與拆分,并且Native Transport需要iPhone工作在USB host模式缅叠,硬件需要支持USB 模式切換悄泥。

關(guān)于如何使用EAP跟外部設(shè)備進行通信,可以參考蘋果官方的demo進行入門和學(xué)習(xí)肤粱。

iOS App連接外部硬件方式的第三大類就是BLE

BLE即低功耗藍牙弹囚,是iOS7.0以后才支持的連接方式。它的優(yōu)點是不需要集成MFI芯片做認證领曼,功耗低鸥鹉,手機端開發(fā)也相對簡單,集成iOS系統(tǒng)提供的CoreBluetooth.framework就行。缺點是:帶寬很低,一般適合于只需要傳輸少量數(shù)據(jù)的場景速址。比如前兩年非撤罚火爆的各種所謂智能硬件,像智能水杯,智能體重計,運動手環(huán)等,都是采用這種連接方式绎狭。

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

總結(jié)一下朋贬,圖中帶MFI字樣的表示該連接方式需要硬件集成MFi芯片凯楔,做MFi認證。關(guān)于蘋果的MFI認證锦募,對iOS開發(fā)中來說其實是一個比較陌生并且繁瑣的topic摆屯,原因如下:

(1)網(wǎng)上鮮有資料,Google基本上查不到。 因為MFi認證是由硬件生產(chǎn)商主導(dǎo)進行的虐骑,蘋果首先對硬件生產(chǎn)商的實力(質(zhì)量准验,信譽,生產(chǎn)規(guī)模)有很苛刻的要求廷没,滿足要求的才有進行MFI認證的資格糊饱。滿足MFi認證資格要求的硬件生產(chǎn)商,提交了MFi產(chǎn)品計劃后才能得到蘋果MFi開發(fā)的官方文檔颠黎,這個文檔是帶水印的另锋,不允許外泄;

(2)MFi認證周期很長狭归,過程也很復(fù)雜夭坪;

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

后面我計劃找時間寫一篇文章專門介紹本人關(guān)于MFI認證的一些經(jīng)驗和感想,有興趣的可以關(guān)注我潭流。謝謝大家寶貴時間閱讀此文竞惋。

微信公眾號:云峰小羅柜去,分享 編程.生活.段子

本人維護了一個“MFi開發(fā)交流”的微信群灰嫉,里面有iOS開發(fā) 、外設(shè)驅(qū)動嗓奢、MFi認證等各類相關(guān)人員讼撒,大家相關(guān)交流,互幫互助股耽。

想進群的可以加本人微信:luoxub?根盒,備注:MFi, 邀請進群。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末物蝙,一起剝皮案震驚了整個濱河市炎滞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诬乞,老刑警劉巖册赛,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異震嫉,居然都是意外死亡森瘪,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門票堵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扼睬,“玉大人,你說我怎么就攤上這事悴势〈坝睿” “怎么了措伐?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長担映。 經(jīng)常有香客問我废士,道長,這世上最難降的妖魔是什么蝇完? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任官硝,我火速辦了婚禮,結(jié)果婚禮上短蜕,老公的妹妹穿的比我還像新娘氢架。我一直安慰自己,他們只是感情好朋魔,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布岖研。 她就那樣靜靜地躺著,像睡著了一般警检。 火紅的嫁衣襯著肌膚如雪孙援。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天扇雕,我揣著相機與錄音拓售,去河邊找鬼。 笑死镶奉,一個胖子當(dāng)著我的面吹牛础淤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播哨苛,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼鸽凶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了建峭?” 一聲冷哼從身側(cè)響起玻侥,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎亿蒸,沒想到半個月后凑兰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡祝懂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年票摇,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片砚蓬。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡矢门,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情祟剔,我是刑警寧澤隔躲,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站物延,受9級特大地震影響宣旱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜叛薯,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一浑吟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧耗溜,春花似錦组力、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至阿宅,卻和暖如春候衍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背洒放。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工蛉鹿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拉馋。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓榨为,卻偏偏與公主長得像惨好,于是被迫代替她去往敵國和親煌茴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容