一個(gè)關(guān)于藍(lán)牙4.0的智能硬件Demo詳解

寫這篇詳解是因?yàn)樽罱芏嗳硕荚趩栂嚓P(guān)問題,但是上篇文章iOS-BLE藍(lán)牙開發(fā)持續(xù)更新已經(jīng)過去半年躲惰,很多東西已經(jīng)開始遺忘致份,今天重新拾起,并在Demo中新添了具體功能和詳細(xì)注釋础拨,順便屢一下當(dāng)初設(shè)計(jì)的思路氮块,我想用圖片來解釋會(huì)更好理解绍载。

首先看一下幾個(gè)文件的大概功能,后面在用圖來分析其中的設(shè)計(jì)理念滔蝉。

文件目錄

整個(gè)文件主要包含四大塊击儡,每一塊的功能都是獨(dú)立開的,不過當(dāng)中卻又設(shè)計(jì)不足的地方蝠引,希望各位能夠積極fork阳谍,貢獻(xiàn)代碼!

  • QWSDiscovery

這個(gè)文件是功能的核心螃概,主要負(fù)責(zé)和系統(tǒng)的CoreBluetooth溝通矫夯,比如掃描設(shè)備,連接吊洼,斷開等操作训貌。其中維護(hù)了一個(gè)設(shè)備列表,使用設(shè)備的uuid來唯一識(shí)別冒窍。在這個(gè)文件中旺订,同時(shí)也定義了通知和錯(cuò)誤類型,方便處理與設(shè)備之間的信息交流超燃。

  • QWSBleHelper

用心的讀者一定發(fā)現(xiàn)区拳,在我們的每一個(gè)viewController中,只要與藍(lán)牙功能相關(guān)意乓,那他一定維護(hù)了一個(gè)helper樱调。在這里我稱這個(gè)頁(yè)面為監(jiān)護(hù)人,智能設(shè)備就像是一個(gè)孩子届良,很多孩子在幼兒園里笆凌,我只關(guān)心我的孩子,而這個(gè)helper就像幼兒園老師士葫,他負(fù)責(zé)告知我們孩子在校的情況乞而,也可以讓我和孩子直接溝通。

helper中會(huì)維護(hù)兩個(gè)集合慢显,一個(gè)是我關(guān)心的設(shè)備集合爪模,一個(gè)是即將斷開的設(shè)備集合。并不是連接成功的設(shè)備就會(huì)加入到這個(gè)集合中荚藻,只有監(jiān)護(hù)人發(fā)出了與這個(gè)設(shè)備相關(guān)的請(qǐng)求(比如說屋灌,連接,獲取信息等)应狱,這個(gè)時(shí)候共郭,hepler可以判定這個(gè)設(shè)備是被監(jiān)護(hù)人關(guān)心的,從而這個(gè)設(shè)備有信息更新的時(shí)候,他會(huì)告知所有監(jiān)護(hù)這個(gè)設(shè)備的監(jiān)護(hù)人除嘹。

在這里之所以即將斷開的設(shè)備集合是為了写半,在監(jiān)護(hù)人發(fā)出斷開請(qǐng)求之后,仍然能夠清晰的告知監(jiān)護(hù)人該設(shè)備的狀態(tài)信息尉咕,等到真正斷開連接之后通知到每一個(gè)監(jiān)護(hù)人污朽。

  • QWSBleHandler

這個(gè)文件顧名思義,就是一些代理方法龙考。設(shè)計(jì)中是將他加入到helper中蟆肆,當(dāng)helper收到設(shè)備發(fā)來的信息時(shí),通過代理將信息拆解并封裝模型通知到所有監(jiān)護(hù)人晦款,寫在這里純粹只是為了看起來更加清晰炎功,分擔(dān)一下各個(gè)文件的代碼壓力。

  • QWSDevControlService

繼承NSObject缓溅,封裝的智能硬件設(shè)備的模型蛇损。
對(duì)于智能硬件設(shè)備來講,單單一個(gè)CBPeripheral(CoreBluetooth里的對(duì)象)是遠(yuǎn)遠(yuǎn)不夠的坛怪。我們可能需要為他豐富更多的擴(kuò)展信息淤齐,比如這個(gè)設(shè)備是否自動(dòng)重連,是否需要斷開后連接袜匿,是否認(rèn)證更啄,重連次數(shù),版本號(hào)等居灯,當(dāng)然也可以繼承CBPeripheral祭务,但這里我覺得將CBPeripheral作為其一個(gè)屬性會(huì)比較清晰。

這個(gè)對(duì)象會(huì)維護(hù)自己所有的讀寫操作怪嫌,不管外界發(fā)來什么指令信息义锥,他都能根據(jù)自己當(dāng)前的狀態(tài),該報(bào)錯(cuò)報(bào)錯(cuò)岩灭,該執(zhí)行執(zhí)行拌倍,并將結(jié)果反饋給每一個(gè)監(jiān)護(hù)人。


圖解說明

1.智能設(shè)備與移動(dòng)端的關(guān)系

Paste_Image.png

我們的Discovery在最頂層噪径,不會(huì)參與與設(shè)備的直接交互柱恤,所有的收發(fā)數(shù)據(jù)都是經(jīng)過系統(tǒng)的框架實(shí)現(xiàn)。

2.監(jiān)護(hù)人與孩子的關(guān)系

Paste_Image.png

圖中的連線很多熄云,可能很迷糊膨更,同一種顏色的連線代表數(shù)據(jù)交互,看helper里關(guān)心的設(shè)備缴允,可以明顯理解,只有關(guān)心這個(gè)設(shè)備才會(huì)收到這個(gè)設(shè)備的信息。

每一個(gè)viewController維護(hù)一個(gè)helper练般,通過NSNotificationCenter廣播所有操作的結(jié)果矗漾,并告知每一個(gè)關(guān)心這個(gè)設(shè)備的viewController。

簡(jiǎn)言之薄料,就是監(jiān)護(hù)人接不接受這個(gè)通知敞贡,或者老師發(fā)不發(fā)送這個(gè)消息給監(jiān)護(hù)人。有一點(diǎn)需要明白的是摄职,不管監(jiān)護(hù)人想不想收到這個(gè)設(shè)備的消息誊役,這個(gè)設(shè)備都是會(huì)廣播自己的信息的,只是helper會(huì)判斷這個(gè)孩子是不是你的~

以上就是這個(gè)Demo的設(shè)計(jì)思路谷市,當(dāng)然Demo中仍有很多不足蛔垢,之所以不敢稱之為kit,是因?yàn)樗_實(shí)沒有達(dá)到kit的封裝能力與效果迫悠,畢竟這只是一個(gè)Demo鹏漆,他只是簡(jiǎn)單體現(xiàn)了一個(gè)設(shè)計(jì)思路,并不能達(dá)到通用的效果创泄,因?yàn)樵谥悄苡布@一塊艺玲,每個(gè)產(chǎn)品的協(xié)議,屬性都會(huì)有所差異鞠抑,不可能做到通用的效果饭聚。希望和大家有更深入的交流與學(xué)習(xí)!

最后回顧一下上篇文章的地址:iOS-BLE藍(lán)牙開發(fā)持續(xù)更新
以及這個(gè)說了很久的Demo地址:一個(gè)iOS BLE藍(lán)牙學(xué)習(xí)的Demo

在這里也順便介紹一下近期看到的一篇關(guān)于BLE開發(fā)的kit(MPBluetoothKit iOS藍(lán)牙框架)搁拙,作者很詳細(xì)的將系統(tǒng)的CoreBluetooth的代理都用block實(shí)現(xiàn)了若治,看起來更加清晰與實(shí)用,也希望各位能夠多多關(guān)注感混,共同學(xué)習(xí)端幼。

進(jìn)一步交流 QQ群:361736344
本站文章如無其他特殊說明,均為原創(chuàng)弧满,轉(zhuǎn)載請(qǐng)注明出處婆跑。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市庭呜,隨后出現(xiàn)的幾起案子滑进,更是在濱河造成了極大的恐慌,老刑警劉巖募谎,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扶关,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡数冬,警方通過查閱死者的電腦和手機(jī)节槐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門搀庶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人铜异,你說我怎么就攤上這事哥倔。” “怎么了揍庄?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵咆蒿,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我蚂子,道長(zhǎng)沃测,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任食茎,我火速辦了婚禮蒂破,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘董瞻。我一直安慰自己寞蚌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布钠糊。 她就那樣靜靜地躺著挟秤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪抄伍。 梳的紋絲不亂的頭發(fā)上艘刚,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音截珍,去河邊找鬼攀甚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛岗喉,可吹牛的內(nèi)容都是我干的秋度。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼钱床,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼荚斯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起查牌,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤事期,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后纸颜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體兽泣,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡指厌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年菇存,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了廊驼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搭儒。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡钠龙,死狀恐怖狠裹,靈堂內(nèi)的尸體忽然破棺而出剪撬,到底是詐尸還是另有隱情椿息,我是刑警寧澤法希,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布枷餐,位于F島的核電站,受9級(jí)特大地震影響苫亦,放射性物質(zhì)發(fā)生泄漏毛肋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一屋剑、第九天 我趴在偏房一處隱蔽的房頂上張望润匙。 院中可真熱鬧,春花似錦唉匾、人聲如沸孕讳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)厂财。三九已至,卻和暖如春峡懈,著一層夾襖步出監(jiān)牢的瞬間璃饱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工肪康, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留荚恶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓磷支,卻偏偏與公主長(zhǎng)得像谒撼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子雾狈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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

  • 文件目錄 整個(gè)文件主要包含四大塊廓潜,每一塊的功能都是獨(dú)立開的,不過當(dāng)中卻又設(shè)計(jì)不足的地方箍邮,希望各位能夠積極fork茉帅,...
    jensen1in閱讀 350評(píng)論 0 0
  • 藍(lán)牙簡(jiǎn)介 藍(lán)牙( Bluetooth? ):是一種無線技術(shù)標(biāo)準(zhǔn),可實(shí)現(xiàn)固定設(shè)備锭弊、移動(dòng)設(shè)備和樓宇個(gè)人域網(wǎng)之間的短距離...
    Chefil閱讀 2,041評(píng)論 2 19
  • 為期8天的澳大利亞之旅在2017年的11月28日0點(diǎn)25分終于落下了帷幕堪澎。雖然目前的我還在調(diào)整時(shí)差和生活工...
    我愛呆萌佩閱讀 1,073評(píng)論 3 6
  • 我想問一下,可不可以跟我談戀愛味滞? 我想問下樱蛤,要不要讓我做你的女朋友钮呀? 我想問下,一起走余下的人生可好昨凡? 我想問下爽醋,...
    神經(jīng)病的病閱讀 73評(píng)論 0 0
  • 生活中我們常常羨慕這樣一種人,工作上高效杰出便脊,生活中也生活得異常瀟灑和多姿多彩蚂四,他們仿佛有一種魔力,吸附著光芒哪痰,同...
    FAN星點(diǎn)點(diǎn)閱讀 331評(píng)論 0 0