網(wǎng)絡(luò)端口
建立Socket使用TCP/IP協(xié)議族進(jìn)行通信,天然支持多通道,想要幾個(gè)通道就建幾個(gè)socket就行了
Wi-Fi 連接
優(yōu)點(diǎn):
- 簡(jiǎn)單,不需要集成MFi芯片
- 只要對(duì)應(yīng)的硬件有無(wú)線網(wǎng)卡,然后將手機(jī)和硬件連接到同一個(gè)局域網(wǎng)中就可以使用 Socket 通過網(wǎng)絡(luò)協(xié)議通信
缺點(diǎn):
- 無(wú)線連接信號(hào)容易受到干擾,不太穩(wěn)定,容易斷開
- 如果硬件使用的場(chǎng)合沒有公共 Wi-Fi,就需要手機(jī)自建熱點(diǎn)共享,硬件進(jìn)行熱點(diǎn)接入,操作步驟較多,對(duì)用戶來(lái)說學(xué)習(xí)使用成本較高,并且熱點(diǎn)共享要求手機(jī)本身的數(shù)據(jù)移動(dòng)網(wǎng)絡(luò)是穩(wěn)定的,在沒有移動(dòng)數(shù)據(jù)網(wǎng)絡(luò)信號(hào)的地方,熱點(diǎn)無(wú)法建立。
- 參考鏈接: http://www.itdecent.cn/p/bcb104f8b8e9
USB熱點(diǎn)共享
這個(gè)其實(shí)跟 Wi-Fi 中的熱點(diǎn)共享非常類似,也不需要集成 MFi 芯片。
優(yōu)點(diǎn):
- USB 熱點(diǎn)共享,走的是有線,不容易受到干擾,更穩(wěn)定,
iPhone 可以邊使用可以邊充電
- iPhone 可以邊使用可以邊充電
缺點(diǎn):
- 操作步驟比較復(fù)雜,需要先打開個(gè)人熱點(diǎn)共享
NCM(需要MFi->廢了,只能用于Carplay)
就是把 USB 端口虛擬成標(biāo)準(zhǔn)的網(wǎng)絡(luò)端口,然后手機(jī)和外設(shè)就能通過有線網(wǎng)絡(luò)直連了,可以理解成手機(jī)和外設(shè)通過一跟網(wǎng)線連起來(lái)了,然后就可以用 Socket 通過 TCP,UDP 進(jìn)行通信了。
優(yōu)點(diǎn):
- 有線連接,非常穩(wěn)定,帶寬足夠
- 不依賴移動(dòng)網(wǎng)絡(luò)信號(hào)
缺點(diǎn):
- 需要集成 MFi 芯片并進(jìn)行 MFi 認(rèn)證,有一定門檻
- 除了 CarPlay,其他跟 iPhone 連接的外設(shè)都不能使用 NCM 的方式跟 iPhone 上的 App 進(jìn)行連接和通信
EAP(MFi,蘋果推薦方式,復(fù)雜,實(shí)現(xiàn)門檻高)
EAP 全拼是 External Accessory Protocol,即外部設(shè)備協(xié)議。這個(gè)是蘋果推薦使用的外設(shè)連接方式。需要外設(shè)集成 MFi 芯片進(jìn)行 MFi 認(rèn)證。手機(jī)端開發(fā)相對(duì)簡(jiǎn)單,只要集成 iOS 系統(tǒng)提供的一個(gè)框架 ExternalAccessory.framework,并且在 info.plist 中配置好協(xié)議字符串 (Supported external accessory protocols),當(dāng) iOS 設(shè)備通過 USB 或者藍(lán)牙連接到對(duì)應(yīng)硬件時(shí),iOS 系統(tǒng)會(huì)把符合 MFi 認(rèn)證要求的外設(shè)抽象成了一個(gè)流對(duì)象,App 通過指定的協(xié)議字符串來(lái)創(chuàng)建一個(gè) EASession 類的實(shí)例來(lái)訪問到該流對(duì)象,就能通過 NSInputStream 和 NSOutputStream 跟硬件件進(jìn)行通信了。
EASession 模式:它的帶寬相對(duì)較低,但是允許同時(shí)通過多個(gè)協(xié)議字符串創(chuàng)建多個(gè)會(huì)話,也就是說直接支持多通道
Native Transport 模式:它的帶寬足夠大,理論值是 100MB 以上,但是不支持多通道,如果業(yè)務(wù)層需要支持多數(shù)據(jù)通道的話需要 App 自己進(jìn)行通道的復(fù)用與拆分,并且 Native Transport 需要 iPhone 工作在 USB Host 模式,硬件需要支持 USB 模式切換
- MFi需要遵循的框架 ExternalAccessory.framework
- MFi 開發(fā)流程 http://www.itdecent.cn/p/8f69c9c4e71e
- MFi是什么? http://www.itdecent.cn/p/b90b0c45398d
外設(shè)連接黑科技 - USBMuxd(不需要MFi認(rèn)證,可參考)
USBMuxd,利用這種連接方式不需要做 MFi 認(rèn)證,支持 iPhone 上的 App 跟外設(shè)通過進(jìn)行通信,非常方便。
基本原理
iPhone 的 iOS 系統(tǒng)中自帶了 USBMuxd 服務(wù),該服務(wù)能夠?qū)崿F(xiàn)
USB-TCP 協(xié)議的轉(zhuǎn)換,能夠把 USB 的端口映射到本機(jī) (localhost) 的 TCP 端 (基于 Unix Domain Socket )。只需要在外設(shè)端也實(shí)現(xiàn)一個(gè) USBMuxd 服務(wù),并指定端口映射關(guān)系, 那
iPhone 的 App 和外設(shè)上的應(yīng)用就可以使用 Socket 進(jìn)行 TCP 進(jìn)行通信了。
參考鏈接:http://www.itdecent.cn/p/74decb993761;http://www.itdecent.cn/p/eba133891ec6
開源實(shí)例:https://github.com/rsms/peertalk