郭昌松+朱添福+林仲

摘要:針對“知天氣”數據監控不及時的問題,提出了基于Android的數據主動監控方案,該方案使用服務器模擬客戶端請求“知天氣”的接口數據,并根據數據的更新時間與當前的時間作對比,如果時間差超過預定的缺失數據時間,就通過信鴿服務向數據監控手機推送數據缺失的報文,數據監控客戶端接收并解析數據缺失的報文,將數據缺失的報文展示在手機客戶端上。
關鍵詞:android;推送;知天氣;氣象數據
中圖分類號:TP39 文獻標識碼:A 文章編號:1007-9416(2017)01-0174-02
Abstract:Aiming at the problem of "ZhiTianQi" data monitoring, an active data monitoring scheme based on Android is proposed. In this scheme, the server simulates the client's request for "weather" and compares the update time with the current time. If the time difference exceeds a predetermined missing data time, a data missing message is pushed to the data monitoring handset through the XinGe service. The data monitoring client receives and parses the missing data packets, and displays the missing data packets on the mobile client.
Key Words:android; push message; ZhiTianQi; meteorological data
“知天氣”是福建省氣象局基于手機平臺開發的氣象手機客戶端服務系統,是福建省首個全省統一客戶端系統和服務平臺。為了向用戶提供及時、專業、豐富的氣象信息服務,該客戶端包括自動站實時數據、一周預報、旅游氣象、天氣綜述、雷達圖、衛星云圖、數值預報、臺風路徑、生活指數等氣象數據,“知天氣”擁有專業和公眾兩個版本,歡迎大家到各商城搜索“知天氣”下載試用。
現在主要是通過人工的方式定時監控知天氣系統是否正常,導致維護人員工作量比較大,而且不能及時發現數據的缺失。“知天氣”客戶端的大部分數據是定時生成、有規律的數據,因此能夠使用程序實現對數據及時有效的監控。本文提出了基于Android系統的數據主動監控方案,可有效解決數據監控問題。
1 系統總體架構
“知天氣”業務系統是一個比較復雜的系統,知天氣業務系統主要有兩個版本:“知天氣-公眾版”和“知天氣-專業版”,知天氣兩個版本共用同一套數據采集服務和數據庫,但是兩個版本由于請求的數據不同,所以使用不同的web服務,雖然知天氣業務系統內部比較復雜,但是我們只關注知天氣的web服務,通過模擬手機客戶端的數據請求服務來對數據進行監控。
該系統的總體框架(如圖1所示)由知天氣數據監控服務、信鴿推送服務,手機監控客戶端三部分組成。知天氣數據監控服務是在服務器上模擬手機客戶端請求數據的服務,通過調用知天氣業務系統的web服務獲取數據,根據已對每種數據制定的監控策略,使用程序判斷該數據是否及時到達,如果數據沒有及時到達就生成數據缺失報文,把數據缺失的報文通過信鴿推送服務推送到手機監控客戶端。
通過對第三方數據推送平臺的比較,本文使用騰訊的信鴿推送服務,該推送服務免費、簡單、實用,這樣我們可以將更多的精力放到業務系統的監控上來,節省了推送服務的研發。通過在知天氣數據監控服務和知天氣手機數據監控客戶端集成信鴿推動服務,完成數據的推送功能。
手機監控客戶端主要是接收并解析監控服務推送過來的數據確實報文,并能夠查詢發送過的歷史信息,還包括手機APP常用的功能,比如系統升級、系統緩存的清理等等。
2 系統功能與實現
該系統的主要功能集中在知天氣數據監控服務端,而手機客戶端主要負責接收和展示推送過來的信息;知天氣數據監控服務端和手機客戶端分別集成了信鴿服務的服務端和客戶端,從而實現了信息的推送和接收。
2.1 知天氣數據監控服務端
知天氣數據監控服務實現了對知天氣所有數據種類的監控,包括自動站實時數據、一周天氣預報、旅游氣象預報、天氣綜述、雷達圖、衛星云圖、數值預報、氣象視頻、生活指數、空氣質量、交通氣象、海洋氣象等氣象數據。由于每種數據的更新周期各不相同,比如自動站實時數據每5分鐘更新一次、雷達圖每6分鐘更新一次、衛星云圖每小時更新一次,數值預報每12小時更新一次,因此根據不同的更新頻率,將更新頻率相近的數據種類分在同一個分組,每個分組由不同的線程實現數據的監控,這樣能夠更有效的監控數據。
本文用判斷福州雷達圖是否缺失的過程來講述數據監控的實現過程,首先獲取福州雷達圖的相關配置,相關配置包括是否監控福州雷達圖的標志、數據的標準缺失時間(這里的數據標準缺失時間是指當前時間與數據更新時間的時間差超過該標準缺失時間時,就認為數據已經缺失)、數據的接口。再根據是否監控雷達圖的標志進行操作,如果需要監控就根據接口使用post方式請求雷達數據,如果不要監控就跳出;本次獲取的只是雷達圖的地址和更新時間等,是JSON格式的字符串,解析JSON字符字符串,提取福州雷達圖的更新時間,使用當前的時間與更新時間作時間差,如果該時間差大于福州雷達的標準缺失時間,就認為福州雷達圖已經缺失,就生成缺失報文,通過信鴿服務向客戶端發送數據報文。
2.2 信鴿的集成
信鴿提供了兩種通知方式,一種是推送通知,推送通知是在設備的通知欄展示的內容,由信鴿SDK完成所有的操作,手機客戶端可以監聽通知被打開的行為,這種方式實現比較簡單,只要在新歌注冊成功后就可以完成通知的下發;另一種方式是透傳消息命令,這種方式下發的消息默認是不會展示在通知欄的,信鴿只負責將消息從信鴿服務器下發到APP這個過程,不負責消息的處理邏輯,需要APP自己實現,這種實現比較復雜,但是靈活性強,可以自定義處理消息的存儲和展示等。通過對兩種方式的比較本系統選擇使用透傳消息命令,主要原因是推送通知的字符數受限制,不能滿足本系統的要求。
要在知天氣數據監控服務端集成信鴿服務,只要在工程文件中加入信鴿服務端的jar包,并在工程文件中引用,調用信鴿服務端相應的接口就能完成數據的推送。
在手機客戶端集成信鴿服務相對于在服務端集成要復雜得多,第一:在工程文件中加入信鴿客戶端的jar包,并在工程文件中引用;第二:在手機客戶端的工程文件AndroidManifest中加入對信鴿客戶端的配置,該配置可以參考信鴿服務的demo,需修改為自己的ACCESS_ID和AccessKey;第三:在MainActivity文件的OnCreate()函數中注冊信鴿服務,需要添加信鴿服務的相關代碼,注冊成功后;第四:為了能夠彈出推送通知,需要在工程文件中添加一個java文件,并命名為App.java,并繼承自Application類,在該類的onCreate()函數中加入xGNotifaction.doNotify()。第五:由于該系統使用的透傳消息命令的方式,所以該系統要繼承信鴿服務的XGPushBaseReceiver類,并在里面實現接收消息,展示消息的功能。
2.3 知天氣數據監控手機客戶端
知天氣數據監控手機客戶端主要負責在接收數據缺失數據的報文,并展示數據缺失報文,前文已經介紹本系統使用的是信鴿的透傳消息,所以要繼承信鴿服務的XGPushBaseReceiver類,在onTextMessage()函數中處理接收到的信息,將數據保存到sqlite本地數據庫中,并使用彈窗的形式彈出剛剛接收到的報文。
本系統使用一個列表視圖(listView)來展示接收到缺失數據的報文,點擊單條項目后會顯示消息的詳細內容。為了減少sqlite保存的數據量,該系統提供了刪除三天前數據的功能,同時該系統還具備手機客戶端常用的功能,比如系統升級、關于我們等等。
3 結語
該系統結合實際業務需求,使用移動互聯網技術,通過手機客戶端主動監控未準時到達的數據,該系統已經在本單位中使用,能夠有效解決數據監控的問題,提高了工作人員的工作效率,通過對服務端的修改,該系統還可以監控本單位的其他業務系統,具有很大的擴展性。
參考文獻
[1]楊賢棟,王笑,袁翔.基于Android的新一代氣象通信傳輸監控系統[J].計算機系統應用,2015,24(3).
[2]楊豐盛.Android應用開發揭秘[M].機械工業出版社,2007.
[3]軟件開發技術聯盟.Anroid開發開發實戰[M].北京出版社,2013.
[4]徐強建,楊飛,翁玲瑜.基于Android的一種主動監控系統設計與研究[J].2014,24(4) .