您好,登錄后才能下訂單哦!
由于公司之前使用的手機客戶端推送服務是極光推送,給公司造成一年幾十萬的服務費,因此,公司決定開發自己的一套推送服務,初步的技術選型是:
服務端:netty4
關于netty框架在我的下面的博客里面我整理了相關資料,本來還有一些關于mina的由于時間原因暫時沒整理出來。
為了便于自己測試,自己動手實現了如何使用netty完成服務端消息推送以及在Android客戶端如何將接受到的信息顯示在通知欄,整體思路大概是這樣的:
服務端使用netty框架開啟基于TCP監聽服務。
客戶端發起TCP連接(不關閉,長連接),并實現心跳包,斷開重連機制。
服務端對長連接進行管理(接受心跳包,處理異常連接),并推送消息。
客戶端監聽到消息后顯示在通知欄,查看消息時客戶端會將數據提交到服務端進行統計。
服務端對自己來說實現起來比較簡單,但是由于自己之前沒有搞過android這塊,不得不去補一些有關android的知識,我是這么分析的:
首先需要知道android是通過什么機制通知系統通知欄顯示東西的。
其次要了解的是android組件的組成以及各個組件的通信方式。
OK!有了基本的思路之后就開始在網上找資料了。
android是通過NotificationManager 來異步通知通知系統通知欄的,這里說的異步可能就決定了我在統計數據的時候有一種數據時統計不了的(用戶人為關閉了APP通知欄),在網上找了很多資料,又說要root權限又說android系統不會提供關掉通知欄的設置的(實際上我的小米手機上是有那個功能的)。但是我一開始的思路是這樣的,既然會提供手動關閉通知欄的系統功能,那么系統內部應該廣播一下這個操作才合理一點啊,可惜的是沒有這個廣播。
關于android的組件大致可以分為四大類:
Activity:通常就是一個單獨的屏幕,它上面可以顯示一些控件也可以監聽并處理用戶的事件做出 響應。
Service:一段長生命周期的,沒有用戶界面的程序,可以用來開發如監控類程序。
Content Provider:內容提供者,
BroadcastReceiver:廣播接收器。
他們的通信一般是使用intent來通信的,當然為了安全,里面都有各自的方式,重寫方法的時候就能拿到組件之間需要發送的信息了。
最后,由于上面的過程自己只花了一個下午的時間來搭建,android客戶端的代碼基本上都是百度搜到的,故就不把源碼貼出來了,不過自己總算是入門了,整體感覺還是蠻簡單的,操作的時候也沒遇到什么困難,把思路分享出來希望對一些沒找對學習方法的人有用。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。