郭昌松+朱添福+林仲
摘要:針對“知天氣”數(shù)據(jù)監(jiān)控不及時的問題,提出了基于Android的數(shù)據(jù)主動監(jiān)控方案,該方案使用服務(wù)器模擬客戶端請求“知天氣”的接口數(shù)據(jù),并根據(jù)數(shù)據(jù)的更新時間與當(dāng)前的時間作對比,如果時間差超過預(yù)定的缺失數(shù)據(jù)時間,就通過信鴿服務(wù)向數(shù)據(jù)監(jiān)控手機推送數(shù)據(jù)缺失的報文,數(shù)據(jù)監(jiān)控客戶端接收并解析數(shù)據(jù)缺失的報文,將數(shù)據(jù)缺失的報文展示在手機客戶端上。
關(guān)鍵詞:android;推送;知天氣;氣象數(shù)據(jù)
中圖分類號:TP39 文獻標(biāo)識碼: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
“知天氣”是福建省氣象局基于手機平臺開發(fā)的氣象手機客戶端服務(wù)系統(tǒng),是福建省首個全省統(tǒng)一客戶端系統(tǒng)和服務(wù)平臺。為了向用戶提供及時、專業(yè)、豐富的氣象信息服務(wù),該客戶端包括自動站實時數(shù)據(jù)、一周預(yù)報、旅游氣象、天氣綜述、雷達圖、衛(wèi)星云圖、數(shù)值預(yù)報、臺風(fēng)路徑、生活指數(shù)等氣象數(shù)據(jù),“知天氣”擁有專業(yè)和公眾兩個版本,歡迎大家到各商城搜索“知天氣”下載試用。
現(xiàn)在主要是通過人工的方式定時監(jiān)控知天氣系統(tǒng)是否正常,導(dǎo)致維護人員工作量比較大,而且不能及時發(fā)現(xiàn)數(shù)據(jù)的缺失。“知天氣”客戶端的大部分?jǐn)?shù)據(jù)是定時生成、有規(guī)律的數(shù)據(jù),因此能夠使用程序?qū)崿F(xiàn)對數(shù)據(jù)及時有效的監(jiān)控。本文提出了基于Android系統(tǒng)的數(shù)據(jù)主動監(jiān)控方案,可有效解決數(shù)據(jù)監(jiān)控問題。
1 系統(tǒng)總體架構(gòu)
“知天氣”業(yè)務(wù)系統(tǒng)是一個比較復(fù)雜的系統(tǒng),知天氣業(yè)務(wù)系統(tǒng)主要有兩個版本:“知天氣-公眾版”和“知天氣-專業(yè)版”,知天氣兩個版本共用同一套數(shù)據(jù)采集服務(wù)和數(shù)據(jù)庫,但是兩個版本由于請求的數(shù)據(jù)不同,所以使用不同的web服務(wù),雖然知天氣業(yè)務(wù)系統(tǒng)內(nèi)部比較復(fù)雜,但是我們只關(guān)注知天氣的web服務(wù),通過模擬手機客戶端的數(shù)據(jù)請求服務(wù)來對數(shù)據(jù)進行監(jiān)控。
該系統(tǒng)的總體框架(如圖1所示)由知天氣數(shù)據(jù)監(jiān)控服務(wù)、信鴿推送服務(wù),手機監(jiān)控客戶端三部分組成。知天氣數(shù)據(jù)監(jiān)控服務(wù)是在服務(wù)器上模擬手機客戶端請求數(shù)據(jù)的服務(wù),通過調(diào)用知天氣業(yè)務(wù)系統(tǒng)的web服務(wù)獲取數(shù)據(jù),根據(jù)已對每種數(shù)據(jù)制定的監(jiān)控策略,使用程序判斷該數(shù)據(jù)是否及時到達,如果數(shù)據(jù)沒有及時到達就生成數(shù)據(jù)缺失報文,把數(shù)據(jù)缺失的報文通過信鴿推送服務(wù)推送到手機監(jiān)控客戶端。
通過對第三方數(shù)據(jù)推送平臺的比較,本文使用騰訊的信鴿推送服務(wù),該推送服務(wù)免費、簡單、實用,這樣我們可以將更多的精力放到業(yè)務(wù)系統(tǒng)的監(jiān)控上來,節(jié)省了推送服務(wù)的研發(fā)。通過在知天氣數(shù)據(jù)監(jiān)控服務(wù)和知天氣手機數(shù)據(jù)監(jiān)控客戶端集成信鴿推動服務(wù),完成數(shù)據(jù)的推送功能。
手機監(jiān)控客戶端主要是接收并解析監(jiān)控服務(wù)推送過來的數(shù)據(jù)確實報文,并能夠查詢發(fā)送過的歷史信息,還包括手機APP常用的功能,比如系統(tǒng)升級、系統(tǒng)緩存的清理等等。
2 系統(tǒng)功能與實現(xiàn)
該系統(tǒng)的主要功能集中在知天氣數(shù)據(jù)監(jiān)控服務(wù)端,而手機客戶端主要負(fù)責(zé)接收和展示推送過來的信息;知天氣數(shù)據(jù)監(jiān)控服務(wù)端和手機客戶端分別集成了信鴿服務(wù)的服務(wù)端和客戶端,從而實現(xiàn)了信息的推送和接收。
2.1 知天氣數(shù)據(jù)監(jiān)控服務(wù)端
知天氣數(shù)據(jù)監(jiān)控服務(wù)實現(xiàn)了對知天氣所有數(shù)據(jù)種類的監(jiān)控,包括自動站實時數(shù)據(jù)、一周天氣預(yù)報、旅游氣象預(yù)報、天氣綜述、雷達圖、衛(wèi)星云圖、數(shù)值預(yù)報、氣象視頻、生活指數(shù)、空氣質(zhì)量、交通氣象、海洋氣象等氣象數(shù)據(jù)。由于每種數(shù)據(jù)的更新周期各不相同,比如自動站實時數(shù)據(jù)每5分鐘更新一次、雷達圖每6分鐘更新一次、衛(wèi)星云圖每小時更新一次,數(shù)值預(yù)報每12小時更新一次,因此根據(jù)不同的更新頻率,將更新頻率相近的數(shù)據(jù)種類分在同一個分組,每個分組由不同的線程實現(xiàn)數(shù)據(jù)的監(jiān)控,這樣能夠更有效的監(jiān)控數(shù)據(jù)。
本文用判斷福州雷達圖是否缺失的過程來講述數(shù)據(jù)監(jiān)控的實現(xiàn)過程,首先獲取福州雷達圖的相關(guān)配置,相關(guān)配置包括是否監(jiān)控福州雷達圖的標(biāo)志、數(shù)據(jù)的標(biāo)準(zhǔn)缺失時間(這里的數(shù)據(jù)標(biāo)準(zhǔn)缺失時間是指當(dāng)前時間與數(shù)據(jù)更新時間的時間差超過該標(biāo)準(zhǔn)缺失時間時,就認(rèn)為數(shù)據(jù)已經(jīng)缺失)、數(shù)據(jù)的接口。再根據(jù)是否監(jiān)控雷達圖的標(biāo)志進行操作,如果需要監(jiān)控就根據(jù)接口使用post方式請求雷達數(shù)據(jù),如果不要監(jiān)控就跳出;本次獲取的只是雷達圖的地址和更新時間等,是JSON格式的字符串,解析JSON字符字符串,提取福州雷達圖的更新時間,使用當(dāng)前的時間與更新時間作時間差,如果該時間差大于福州雷達的標(biāo)準(zhǔn)缺失時間,就認(rèn)為福州雷達圖已經(jīng)缺失,就生成缺失報文,通過信鴿服務(wù)向客戶端發(fā)送數(shù)據(jù)報文。
2.2 信鴿的集成
信鴿提供了兩種通知方式,一種是推送通知,推送通知是在設(shè)備的通知欄展示的內(nèi)容,由信鴿SDK完成所有的操作,手機客戶端可以監(jiān)聽通知被打開的行為,這種方式實現(xiàn)比較簡單,只要在新歌注冊成功后就可以完成通知的下發(fā);另一種方式是透傳消息命令,這種方式下發(fā)的消息默認(rèn)是不會展示在通知欄的,信鴿只負(fù)責(zé)將消息從信鴿服務(wù)器下發(fā)到APP這個過程,不負(fù)責(zé)消息的處理邏輯,需要APP自己實現(xiàn),這種實現(xiàn)比較復(fù)雜,但是靈活性強,可以自定義處理消息的存儲和展示等。通過對兩種方式的比較本系統(tǒng)選擇使用透傳消息命令,主要原因是推送通知的字符數(shù)受限制,不能滿足本系統(tǒng)的要求。
要在知天氣數(shù)據(jù)監(jiān)控服務(wù)端集成信鴿服務(wù),只要在工程文件中加入信鴿服務(wù)端的jar包,并在工程文件中引用,調(diào)用信鴿服務(wù)端相應(yīng)的接口就能完成數(shù)據(jù)的推送。
在手機客戶端集成信鴿服務(wù)相對于在服務(wù)端集成要復(fù)雜得多,第一:在工程文件中加入信鴿客戶端的jar包,并在工程文件中引用;第二:在手機客戶端的工程文件AndroidManifest中加入對信鴿客戶端的配置,該配置可以參考信鴿服務(wù)的demo,需修改為自己的ACCESS_ID和AccessKey;第三:在MainActivity文件的OnCreate()函數(shù)中注冊信鴿服務(wù),需要添加信鴿服務(wù)的相關(guān)代碼,注冊成功后;第四:為了能夠彈出推送通知,需要在工程文件中添加一個java文件,并命名為App.java,并繼承自Application類,在該類的onCreate()函數(shù)中加入xGNotifaction.doNotify()。第五:由于該系統(tǒng)使用的透傳消息命令的方式,所以該系統(tǒng)要繼承信鴿服務(wù)的XGPushBaseReceiver類,并在里面實現(xiàn)接收消息,展示消息的功能。
2.3 知天氣數(shù)據(jù)監(jiān)控手機客戶端
知天氣數(shù)據(jù)監(jiān)控手機客戶端主要負(fù)責(zé)在接收數(shù)據(jù)缺失數(shù)據(jù)的報文,并展示數(shù)據(jù)缺失報文,前文已經(jīng)介紹本系統(tǒng)使用的是信鴿的透傳消息,所以要繼承信鴿服務(wù)的XGPushBaseReceiver類,在onTextMessage()函數(shù)中處理接收到的信息,將數(shù)據(jù)保存到sqlite本地數(shù)據(jù)庫中,并使用彈窗的形式彈出剛剛接收到的報文。
本系統(tǒng)使用一個列表視圖(listView)來展示接收到缺失數(shù)據(jù)的報文,點擊單條項目后會顯示消息的詳細(xì)內(nèi)容。為了減少sqlite保存的數(shù)據(jù)量,該系統(tǒng)提供了刪除三天前數(shù)據(jù)的功能,同時該系統(tǒng)還具備手機客戶端常用的功能,比如系統(tǒng)升級、關(guān)于我們等等。
3 結(jié)語
該系統(tǒng)結(jié)合實際業(yè)務(wù)需求,使用移動互聯(lián)網(wǎng)技術(shù),通過手機客戶端主動監(jiān)控未準(zhǔn)時到達的數(shù)據(jù),該系統(tǒng)已經(jīng)在本單位中使用,能夠有效解決數(shù)據(jù)監(jiān)控的問題,提高了工作人員的工作效率,通過對服務(wù)端的修改,該系統(tǒng)還可以監(jiān)控本單位的其他業(yè)務(wù)系統(tǒng),具有很大的擴展性。
參考文獻
[1]楊賢棟,王笑,袁翔.基于Android的新一代氣象通信傳輸監(jiān)控系統(tǒng)[J].計算機系統(tǒng)應(yīng)用,2015,24(3).
[2]楊豐盛.Android應(yīng)用開發(fā)揭秘[M].機械工業(yè)出版社,2007.
[3]軟件開發(fā)技術(shù)聯(lián)盟.Anroid開發(fā)開發(fā)實戰(zhàn)[M].北京出版社,2013.
[4]徐強建,楊飛,翁玲瑜.基于Android的一種主動監(jiān)控系統(tǒng)設(shè)計與研究[J].2014,24(4) .