關于iOS藍牙開發(fā)小結

公司項目是做心電監(jiān)測的,實時采集心電數(shù)據(jù).

項目是自己基于CoreBluetooth封裝的, 沒有采用第三方庫.
原來沒有做過藍牙通信, 也是從頭學起的, 好在iOS開發(fā)相對于簡單一些, 接口封裝的都比較簡單實用, 不過這期間因為設備寨蹋、高標準的需求, 也的確是遭遇了不少的挑戰(zhàn), 這一路走來也都逐個突破了.

e.g.

  1. 當時設備的Pairing影響到重連
    最終查閱一堆資料, 最終是設備端采取的安全機制問題, 也因此查閱了藍牙底層協(xié)議棧,對藍牙進一步有所了解和掌握,雖然對于iOS開發(fā)上并無太大幫助,但對技術的基類,進一步的研究學習,相信今后還是有很大的幫助的,在學習過程中也發(fā)現(xiàn)很多從事藍牙開發(fā)的iOS工程師,對藍牙技術棧并不了解,或者了解; 也因此了解到, 雖然公司本質(zhì)是做藍牙硬件通信這方面的, 但是對藍牙的技術儲備實在是不敢恭維
  1. 通信速度沒有達到廠家的最高標準
    這個也是棘手的問題, 從代碼層又無從下手, iOS上又無法修改ATT_MTU_Size(獲取底層上可以實現(xiàn),但和很多從事這方面的人交流或者是查詢很多資料后并未發(fā)現(xiàn)如何去實現(xiàn)),在最終無奈的情況下,郵件將我的疑問反饋給工廠那邊, 那邊又搪塞說啊啊啊你這個速度就已經(jīng)很正常了...但是在最高波特率115200下的傳輸速度不穩(wěn)這件事還是無法解決, 關于iPhone 7/plus新增的BLE extension功能有何提升,在速度上我也是沒有看出明顯變化, 總之這件事似乎也不了了之了
  1. 強實時, 保后臺
    因為是做心電監(jiān)測的, 時效性肯定是重中之重, 起初做項目的時候壓根不知道要保證那么長的時間, 項目做出來了, 突然說出來這個需求,當時就有點冒冷汗了,自測一次最長時間是48h (原公司只有Android項目, 據(jù)說最早是外包的, 由于需要做iOS, Android自學后寫出來的, 當時是藍牙3.0, 因為MFI等一些原因被拒, 然后打算只做BLE 4.0,并專門招一個iOS), 算是達到了最低標準, 也松了口氣, 而且項目內(nèi)原來的一部分數(shù)據(jù)處理存在內(nèi)存泄漏, 優(yōu)化后還是有提升空間的
  1. OTA
    做藍牙不得不提OTA, 也就是空中升級功能, 一開始并沒有這個需求, 不過既然從事了藍牙開發(fā), 就在不斷學習藍牙中提早的了解了這方面的姿勢, 在需求下來后, 因為硬件那邊先要適配Android 3.0 , 所以我只能先按照規(guī)定下來的邏輯擼代碼了, 最終在4.0設備適配好后, 在進行聯(lián)調(diào)和優(yōu)化, 好在準備充分,這塊算是最順利的, 我們的產(chǎn)品升級文件比較小,大概155KB的一個txt文件,這里要提一下,網(wǎng)上很多資料都說iOS發(fā)送文件長度超過20Byte就會丟掉,我分別按照20Byte、50Byte众辨、70Byte和150Byte等調(diào)試過, 除了50拦焚、70Bye丟包率嚴重外,150Byte最為穩(wěn)定, 并不像網(wǎng)上說的那樣, 既然單個包的大小我定位了150Byte,這里面還會包含于硬件規(guī)定好的協(xié)議頭、尾等8Byte, 這樣數(shù)據(jù)部分是142Byte, 所以將原始文件每142Byte拆出來加上協(xié)議8Bye組成一個個150Byte的包, 一次完整的升級文件大概被分成1093個包左右, 2min中內(nèi)完成, 而且在我連續(xù)幾十次的不斷測試下,才會出現(xiàn)幾個丟包, 這主要與設備頻繁的執(zhí)行OTA過程,設備發(fā)熱等原因有關, 如果只是一次或者幾次的執(zhí)行OTA過程, 基本上可以保證丟包率為0

隨著功能不斷的添加, 優(yōu)化, 適配, 之前最近幾天前發(fā)現(xiàn)一個重大BUG, 連接設備后, 大概5分鐘左右會斷開一次, 控制臺報錯信息:

Error Domain = CBErrorDomain 
               Code = 6 "The connection has timed out unexpectedly." 
    UserInfo =  {
                    NSLocalizedDescription =The connection has timed out unexpectedly.
                }

測試設備:iPhone 6
設備系統(tǒng):iOS 11.0.X (具體版本號不記得了)

突然冒出來這么個大BUG, 我也是懵逼了, 難道最近一直忙著寫其他需求, 忽略了? 最近改代碼新增BUG? 還是一直存在沒留意沒發(fā)現(xiàn)?

當時身邊沒有其他測試手機,就想著用自己的手機先跑下 ,結果Xcode提示不支持該版本iOS系統(tǒng), 然后我就想著是不是iOS系統(tǒng)自身的BUG,把測試機給升級到了iOS 11.1.1, 可升級完后, Xcode 9.0又不能支持這么高版本的iOS系統(tǒng)了. 檢查Xcode更新又沒有, 真是蛋疼啊.....

換了設備,依舊, 找了個Android機跑了下, 一切正常, 又找了個iOS 10的測試機跑來一切正常, 稍微淡定了一些, 看樣子是新增問題, 等等看, 等收到Xcode更新后升級完跑在iOS 11.1.1上看看.于是先去查詢下這方面資料

遇到這個問題的很少, 在Stack Overflow上搜到幾個, 系統(tǒng)版本還是iOS 8.0+的,并不是近期的,簡單看了下, 應該不是一回事. 在蘋果技術論壇中發(fā)現(xiàn)了一例相同的BUG 鏈接, 等了很久都沒有更新, 查詢資料也沒有什么進展, 不得不去蘋果網(wǎng)站手動找Xcode更新, 更新后,跑在iOS 11.1.1上,目前一切正常, 希望這個BUG被蘋果真正修復了, 否則這樣嚴重的BUG對于藍牙強實時的產(chǎn)品就是嚴重的沖擊.

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贬墩,一起剝皮案震驚了整個濱河市弹囚,隨后出現(xiàn)的幾起案子卫键,更是在濱河造成了極大的恐慌,老刑警劉巖缆巧,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件布持,死亡現(xiàn)場離奇詭異,居然都是意外死亡陕悬,警方通過查閱死者的電腦和手機题暖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捉超,“玉大人胧卤,你說我怎么就攤上這事∑丛溃” “怎么了枝誊?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長惜纸。 經(jīng)常有香客問我叶撒,道長,這世上最難降的妖魔是什么耐版? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任祠够,我火速辦了婚禮,結果婚禮上粪牲,老公的妹妹穿的比我還像新娘哪审。我一直安慰自己,他們只是感情好虑瀑,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布湿滓。 她就那樣靜靜地躺著滴须,像睡著了一般。 火紅的嫁衣襯著肌膚如雪叽奥。 梳的紋絲不亂的頭發(fā)上扔水,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音朝氓,去河邊找鬼魔市。 笑死,一個胖子當著我的面吹牛赵哲,可吹牛的內(nèi)容都是我干的待德。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼枫夺,長吁一口氣:“原來是場噩夢啊……” “哼将宪!你這毒婦竟也來了?” 一聲冷哼從身側響起橡庞,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤较坛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后扒最,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丑勤,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年吧趣,在試婚紗的時候發(fā)現(xiàn)自己被綠了法竞。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡强挫,死狀恐怖岔霸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纠拔,我是刑警寧澤秉剑,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站稠诲,受9級特大地震影響侦鹏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜臀叙,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一略水、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧劝萤,春花似錦渊涝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胸私。三九已至,卻和暖如春鳖谈,著一層夾襖步出監(jiān)牢的瞬間岁疼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工缆娃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留捷绒,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓贯要,卻偏偏與公主長得像暖侨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子崇渗,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

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

  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫字逗、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,024評論 4 62
  • 水太藍显押,所以想念漫出地平線扳肛。風都留在樹林里傻挂,所以葉子喜歡唱歌乘碑。陽光打磨鵝卵石,所以記憶越來越沉淀金拒。雨水想看愛人一眼...
    南有喬木8_4閱讀 259評論 1 0
  • “@萌萌,不好意思幢码,我刪除你了笤休。你給我發(fā)了三次廣告,前面兩次提醒你症副,第三次直接刪除你了店雅!”昵稱為大叔的說道,這是大...
    王小嘉1閱讀 119評論 0 0
  • 睡覺總愛做夢贞铣,一睡著就做夢闹啦,整夜整夜做夢的那種。做的夢辕坝,各種各樣窍奋,醒來恍恍惚惚,似醒似夢。夢境里琳袄,是我非我江场。 那些...
    紫云木閱讀 467評論 37 3