iOS app藍牙連接打印機

最近做了個app藍牙連接打印機打印的功能认轨,感覺這方面的東西網(wǎng)上的不多,所以寫一篇文章存?zhèn)€檔饿肺。

因為我本人也是第一次接觸藍牙方面的功能,所以一開始也是各種百度唧喉,最后找到了大神寫好的一個藍牙庫,叫BLEPrinter。了解清楚其中原理之后法挨,直接用上項目了。

首先第一步就是連接打印機了兄旬,這一步用了庫的話實在沒什么好說的了狼犯,根據(jù)實際需要調用一下庫中方法就行,上圖:

庫中方法

好了领铐,打印機連好了悯森,那么,要打印的數(shù)據(jù)從哪里來绪撵?因為這個項目中已經(jīng)集成好了極光瓢姻,所以后臺將通過極光自定義消息來發(fā)送訂單編號。所以我在極光接收自定義消息的代理里加了個通知音诈,然后再連接打印機的界面里寫了接收通知和通知方法實現(xiàn)的代碼幻碱,上代碼:

appDelegate中
連接打印機的界面中

接著實現(xiàn)這個startPrintOrder:方法就可以了。打印數(shù)據(jù)的方法细溅,庫中已經(jīng)提供了褥傍。由于我通過自定義消息拿到的只是訂單號,所以還要通過請求一次接口拿到該訂單的訂單詳情喇聊。拿到訂單詳情之后就需要排版打印數(shù)據(jù)了恍风。看了一下庫誓篱,排版所需的指令集已經(jīng)封裝好朋贬,可以根據(jù)自己的需求修改。順便提一下窜骄,我的項目中锦募,打印機具有切割的功能,所以需要切割的指令集啊研,當時百度了很久都沒找到御滩,后來還是安卓給的我鸥拧,為了方便他人,在這里放出:

切割指令集

調用打印方法削解,將排版好的數(shù)據(jù)打印出來:

庫中方法

到了這里富弦,打印功能就差不多完成了。測試一下氛驮,因為自定義消息的方法只能在app處于前臺狀態(tài)的時候使用腕柜,所以,成功連接打印機之后app在前臺時矫废,收到訂單之后盏缤,可以馬上打印出訂單詳情。當app處于后臺時蓖扑,收到訂單之后不會馬上打印出訂單詳情唉铜,而是等app重新回到前臺狀態(tài),如果這個時候藍牙打印機沒有斷開連接的話律杠,就會打印出在后臺收到的所有訂單的訂單詳情潭流。

ok,完事柜去,去找產品提交任務灰嫉。產品說:不行,要求app在后臺時收到訂單也要打印嗓奢,手機鎖屏也要打印讼撒。行吧,現(xiàn)在開始考慮后臺打印股耽。


和安卓根盒,后臺商量了下,決定app處于前臺的時候物蝙,訂單編號通過自定義消息發(fā)送郑象;app處于后臺的時候,訂單編號通過通知的形式發(fā)送茬末。那么問題來了厂榛,后臺如何知道app是處在前臺還是后臺呢?調接口丽惭。

后臺給了個接口击奶,讓我在前臺的時候傳個1,進入后臺了责掏,傳個0柜砾,所以我在appDelegate里:

前臺后臺的代理

然后在極光接收通知消息內容的代理里加個通知:

appDelegate中

然后如同自定義消息一般在連接打印機的界面中實現(xiàn)對應的通知方法就可以了。流程現(xiàn)在已經(jīng)很清晰了换衬,然而痰驱。证芭。。

因為藍牙功能只能用真機測試担映,所以我通過xcode連著數(shù)據(jù)線在真機上運行程序废士,測完前臺的功能之后,繼續(xù)測試后臺是否能打印蝇完。嗯官硝,這個斷點跑到了,那個方法走到了短蜕,結果完全沒啥問題氢架。所以我就把程序提交給了測試小姐姐去測。后來測試小姐姐反饋給我說:iOS前臺打印可以朋魔,后臺打印不行岖研,安卓的都可以。

我警检?缎玫??明明我自己測試的時候是沒啥問題的解滓。于是我又用xcode連線真機運行,該走的方法都走了筝家,為什么測試那關過不去呢洼裤?后來我發(fā)現(xiàn),真機獨立運行程序溪王,連上打印機后把app切換到后臺或者直接鎖屏腮鞍,下單,收到通知莹菱,確實是不打印移国。但是真機獨立運行的話報錯信息我怎么看?于是我陷入了連著線運行沒問題道伟,真機獨立運行有問題但是看不出問題的死循環(huán)中迹缀。。蜜徽。

期間查看了不少藍牙后臺模式的文章祝懂,項目中支持藍牙后臺模式的key和mode都設置了,但是還是不行拘鞋。后來有人勸我讓用戶點擊通知回到app再打印砚蓬,我試了試,這個方法不太符合需求盆色,我發(fā)現(xiàn)點擊通知回到app的時候其他的這個APP的通知都會消失灰蛙,而我在那條通知里只能獲取到那條通知所包含著的訂單編號祟剔。假設在后臺的時候收到了幾條訂單,然而我點擊某一條通知只能打印出點擊的那條通知的訂單摩梧,別的訂單都消失了物延,GG。也有人猜測是不是程序在后臺被殺死了障本,于是我添加了百度來的在后臺繼續(xù)存活三分鐘的代碼教届,發(fā)現(xiàn)在三分鐘里還是不打印。無奈啊無奈驾霜,用xcode調試后臺打印案训,代碼都運行的,一用真機獨立測試就不行了粪糙,哪一步出了問題也看不出强霎。

后來我跟幾個iOS好友們討論了許久,他們認為我要在后臺蓉冈,實現(xiàn)請求接口(拿到訂單編號去請求訂單數(shù)據(jù))城舞,排版打印數(shù)據(jù),再發(fā)送打印指令讓打印機打印(也是個異步過程)寞酿,是不太可能的家夺,蘋果手機不會允許一個在后臺的app還能夠做這么多事的。但是我藍牙后臺模式要求的配置都弄了啊伐弹,藍牙的后臺模式到底能做些什么東西拉馋?更重要的是為什么xcode連著線運行后臺打印沒問題?就是因為xcode連著線運行后臺打印沒問題惨好,我才一直以為是我代碼的問題煌茴。我覺得我很委屈。日川。蔓腐。

折騰了半個月,實在沒辦法了龄句,就把這個問題交給了上級回论。上級后來給了我答復。他查了資料發(fā)現(xiàn)分歇,iOS端app后臺藍牙長久的與藍牙設備連接透葛,這個確實是可以實現(xiàn)的。但是需要這個藍牙設備支持心跳機制卿樱,并且是藍牙設備給app發(fā)消息僚害,app給藍牙設備發(fā)消息的話不好實現(xiàn)。行吧,最后結果是iOS端后臺打印功能不做了萨蚕,只支持前臺靶草。這個卡了我近月的坎終于過去了。

文末了岳遥,還有個問題還沒解決:xcode連著線在真機上運行app奕翔,后臺打印沒問題的原因,可能是通過xcode運行浩蓉,真機會給這個app提供足夠多的內存吧派继,所以沒問題。但是真機獨立運行了捻艳,就不行了驾窟。

后來我就把程序改成了只有前臺打印,對认轨,也就是分割線之前的那個樣子绅络。之所以會寫這篇文章,也希望如果有人遇到了和我一樣的需求之后嘁字,這篇文章能夠幫到你恩急,至少別在后臺打印那一塊和我一樣傻乎乎的折騰許久了吧,看著安卓能流暢的實現(xiàn)后臺打印纪蜒,我眼紅啊衷恭。最后,如果我這篇文章中有什么錯誤纯续,請告訴我随珠;如果你已經(jīng)實現(xiàn)了iOS后臺打印,那就更要告訴我了杆烁,讓我參考下你的實現(xiàn)方法。(長嘆一口氣)一起努力吧简卧!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末兔魂,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子举娩,更是在濱河造成了極大的恐慌析校,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铜涉,死亡現(xiàn)場離奇詭異智玻,居然都是意外死亡,警方通過查閱死者的電腦和手機芙代,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門吊奢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纹烹,你說我怎么就攤上這事页滚≌俦撸” “怎么了?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵裹驰,是天一觀的道長隧熙。 經(jīng)常有香客問我,道長幻林,這世上最難降的妖魔是什么贞盯? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮沪饺,結果婚禮上躏敢,老公的妹妹穿的比我還像新娘。我一直安慰自己随闽,他們只是感情好父丰,可當我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著掘宪,像睡著了一般蛾扇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上魏滚,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天镀首,我揣著相機與錄音,去河邊找鬼鼠次。 笑死更哄,一個胖子當著我的面吹牛,可吹牛的內容都是我干的腥寇。 我是一名探鬼主播成翩,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赦役!你這毒婦竟也來了麻敌?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤掂摔,失蹤者是張志新(化名)和其女友劉穎术羔,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乙漓,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡级历,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了叭披。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寥殖。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出扛禽,到底是詐尸還是另有隱情锋边,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布编曼,位于F島的核電站豆巨,受9級特大地震影響,放射性物質發(fā)生泄漏掐场。R本人自食惡果不足惜往扔,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望熊户。 院中可真熱鬧萍膛,春花似錦、人聲如沸嚷堡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蝌戒。三九已至串塑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間北苟,已是汗流浹背桩匪。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留友鼻,地道東北人傻昙。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像彩扔,于是被迫代替她去往敵國和親妆档。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內容