ExternalAccessory.framework外部附件框架開發(fā)中我所經(jīng)歷過的坑

? ? ? ? 關(guān)于ExternalAccessory這個框架志电,我就不多說,有很多介紹ExternalAccessory.framework這個框架的文章,在簡書中就能找出很多瓢姻,比如這里暴氏,就是一篇講的非常好的延塑。我要介紹的是關(guān)于ExternalAccessory.framework這個框架我在開發(fā)中遇到的坑。

一答渔、系統(tǒng)方面變化

? ? ? ?最開始接觸這個框架是在ios9的時候关带,我要維護一個關(guān)于這個項目的框架,所以也查了關(guān)于這個框架的資料(那個時候這方面的資料還是很少的)沼撕,結(jié)合我需要維護的項目以及蘋果給的AEDemo豫缨,就開始試著自己重新寫一個一樣的項目出來。首先是導(dǎo)入框架端朵,然后注冊通知好芭,然后根據(jù)通知的回調(diào)知道是否有設(shè)備連接上(藍牙設(shè)備連接了,也是會有提示的冲呢,會走通知的方法的)舍败。

AE框架通知

? ? ? ? 然后來說說這個通知,在ios9之前敬拓,link:這個方法會跑兩遍邻薯,也就是會有兩個設(shè)備連接,只是連接一個Lightning設(shè)備乘凸,為啥會有兩個設(shè)備連接呢厕诡?這個我也不知道。用蘋果提供的AEdome可以很清楚的看到確實是有兩個設(shè)備連接的营勤,如果點擊進去看呢灵嫌,會發(fā)現(xiàn)modeName是不同的,一個是mcu根據(jù)產(chǎn)品信息燒錄進去的葛作,還有一個呢叫做X90寿羞。而且一個是有協(xié)議(這個協(xié)議我會在下面說),另外一個是沒有協(xié)議的赂蠢。所以是可以根據(jù)協(xié)議去判斷是去跟那個設(shè)備進行通信绪穆。

? ? ? ? 在ios10的時候啊,貌似蘋果對ExternalAccessory做了一些調(diào)整,link這個方法只會跑一次了玖院,也就是只會連接一次了菠红,但是呢,modeName這個屬性查到是x90了难菌,在設(shè)置->關(guān)于本機中去看呢试溯,又是顯示是正確的,我跑去問了下mcu工程師扔傅,他說他那邊沒啥錯誤耍共,但是框架里只有這個屬性能看到。最后沒辦法了猎塞,只好跟mcu工程協(xié)商了一下试读,增加一條協(xié)議,在建立通信連接的時候發(fā)送查詢指令查詢modeName(版本號也是這樣的荠耽,也可以用這個方法來查)钩骇。

? ? ? ? 最后就是ios11了,我覺得是最坑的了铝量,link方法會跑一次倘屹,然后協(xié)議也是正確的,都已經(jīng)建立通信連接了慢叨,可以發(fā)送數(shù)據(jù)了纽匙,但是呢disconnect方法也執(zhí)行了,然后又斷開了連接拍谐,然后又調(diào)用了一次link方法烛缔。這種效果跟在設(shè)置->關(guān)于本機中看設(shè)備出現(xiàn)的效果有點像。但是我發(fā)現(xiàn)不知道是我代碼的原因還是什么原因轩拨,導(dǎo)致session = nil践瓷,我弄了一兩天,也沒找到原因亡蓉,最后因為項目有點趕晕翠,所以,我就獲取系統(tǒng)版本號砍濒,ios11做了單獨的處理淋肾。

再說最后一點,如果是插lightning設(shè)備梯影,然后再啟動App巫员,那么是不會走link方法,需要用

?[[NSMutableArray alloc] initWithArray:[[EAAccessoryManager sharedAccessoryManager] connectedAccessories]];這個方法去獲取甲棍。這個方法會返回一個數(shù)組,里面包含已經(jīng)連接上的設(shè)備(不要問我什么還要說這個)。

二感猛、協(xié)議

? ? ? ? 另外七扰,再來說說協(xié)議,記住一定要在plist文件中增加協(xié)議陪白,不然session也是會等于nil的颈走。一般是先獲取到設(shè)備里面的協(xié)議進行對比,如果協(xié)議是正確的就建立通信咱士。當然我是因為公司有很多產(chǎn)品立由,都用了同一個協(xié)議,所以我就增加了另外兩個參數(shù)序厉,ModeName以及name锐膜。

? ? ? ? 再有,就是在設(shè)備里面讀取到了2個協(xié)議一個自己公司定義的協(xié)議弛房,另外還多了一個協(xié)議道盏,估計是蘋果給的協(xié)議,有可能是蘋果強制加上去的通用協(xié)議文捶,也有可能是MCU工程師沒有將原本有的這個協(xié)議刪除荷逞。

被涂掉的是設(shè)備的協(xié)議

三、后臺處理

App進入后臺時粹排,我測試到有時會丟失發(fā)送的數(shù)據(jù)种远,但是有時候又能正常使用,因為我不知道具體的通信方式是如何 的顽耳,所以我在后臺做了處理坠敷,每次進入后臺就停止發(fā)送,回到前臺時斧抱,重新開始發(fā)送數(shù)據(jù)常拓,確保數(shù)據(jù)不會漏發(fā)。

只要在下圖勾選如下圖所示辉浦,可以APP后臺發(fā)數(shù)據(jù)

最近發(fā)現(xiàn)一本書《Building iPhone OS Accessories: Use the iPhone Accessories API to Control 》是關(guān)于EA框架的弄抬,大家可以去看看

四、Could‘t find the ''com.apple.private.externalaccessory.showallaccessories'' entitlement

在iOS10之前是不會在運行l(wèi)og中出現(xiàn)這個提示宪郊,但是進過我的測試發(fā)現(xiàn)并沒有什么影響掂恕,在蘋果論壇中也有帖子討論這個問題。

五弛槐、線程鎖死

如果發(fā)現(xiàn)能與APP進行通訊設(shè)備懊亡,沒改什么代碼缺不能通訊了,設(shè)備接入?yún)s發(fā)現(xiàn)設(shè)備通知方法都不走了乎串,連設(shè)置——通用——關(guān)于本機中也看不到設(shè)備了(或者沒插任何設(shè)備卻還是有設(shè)備)店枣,那么就是外部連接線程鎖死了,重啟一下就好了。建議不能通信的時候最好是看下關(guān)于本機中有沒有設(shè)備顯示鸯两,如果設(shè)置中有設(shè)備顯示闷旧,那么基本上就可以確定是程序出現(xiàn)問題了。

注:這些都是開發(fā)時查找到的資料和自己的一些總結(jié)钧唐,如果看到到相關(guān)資料或者繼續(xù)有其他的總結(jié)忙灼,有些問題我可能忘記了,如果想起來也會繼續(xù)更新钝侠。上面有錯誤的地方也請大家告訴我该园,我會馬上更正帅韧,還有就是上面這些坑出現(xiàn)的原理知道的話,也請大家告訴我弱匪,我也會更新的青瀑。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末斥难,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子帘饶,更是在濱河造成了極大的恐慌哑诊,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件及刻,死亡現(xiàn)場離奇詭異镀裤,居然都是意外死亡,警方通過查閱死者的電腦和手機缴饭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門暑劝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人颗搂,你說我怎么就攤上這事担猛。” “怎么了丢氢?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵傅联,是天一觀的道長。 經(jīng)常有香客問我疚察,道長蒸走,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任貌嫡,我火速辦了婚禮比驻,結(jié)果婚禮上该溯,老公的妹妹穿的比我還像新娘。我一直安慰自己嫁艇,他們只是感情好朗伶,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布弦撩。 她就那樣靜靜地躺著步咪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪益楼。 梳的紋絲不亂的頭發(fā)上猾漫,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機與錄音感凤,去河邊找鬼悯周。 笑死,一個胖子當著我的面吹牛陪竿,可吹牛的內(nèi)容都是我干的禽翼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼族跛,長吁一口氣:“原來是場噩夢啊……” “哼闰挡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起礁哄,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤长酗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后桐绒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體夺脾,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年茉继,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烁竭。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡生均,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出腥刹,到底是詐尸還是另有隱情衔峰,我是刑警寧澤蛙粘,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布出牧,位于F島的核電站歇盼,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏伯复。R本人自食惡果不足惜邢笙,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望叮雳。 院中可真熱鬧妇汗,春花似錦、人聲如沸厌均。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽模她。三九已至懂牧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間畜侦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留途事,地道東北人擅羞。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓减俏,卻偏偏與公主長得像碱工,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子草慧,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

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