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