黃金剛閆民正郭林旺
1)山西省地震局,太原 030021
2)山西省地震局臨汾中心地震臺,臨汾 041000
基于云推送和Android的地震信息發(fā)布技術1
黃金剛1)閆民正1)郭林旺2)
1)山西省地震局,太原 030021
2)山西省地震局臨汾中心地震臺,臨汾 041000
本文分析了地震行業(yè)信息發(fā)布的特點及需求,在地震信息發(fā)布中引入了百度云推送技術,論述了百度云推送在地震行業(yè)使用的效果,開發(fā)了Android應用接收推送信息。通過百度云推送技術及Android的應用有效地提供了地震信息發(fā)布的時效性、穩(wěn)定性和受眾面。
push云推送 百度云推送 Android 信息發(fā)布
黃金剛,閆民正,郭林旺,2015.基于云推送和Android的地震信息發(fā)布技術.震災防御技術,10(4):1004—210. doi:10.11899/zzfy20150419
地震行業(yè)經(jīng)過這些年的發(fā)展,地震信息量劇增,如何及時有效地將信息發(fā)布給公眾,是地震部門當前面臨的重大挑戰(zhàn),主要表現(xiàn)為以下幾個方面:第一,地震行業(yè)的信息發(fā)布相對于其他行業(yè)有其特殊性,在沒有地震突發(fā)事件時,訪問量相對較小,而在地震事件發(fā)生時,信息訪問量會激增,尤其是在重大地震發(fā)生后傳統(tǒng)的信息發(fā)布機制有可能會失效;第二,重大地震發(fā)生后有可能會破壞當?shù)氐耐ㄓ嵒A設施以及地震信息發(fā)布設施,導致信息無法發(fā)布出去;第三,當前地震行業(yè)的信息發(fā)布方式還比較單一,地震發(fā)生后如果按當前的發(fā)布方式也會失效,地震信息也無法及時發(fā)布。
本文根據(jù)地震信息發(fā)布的特點,嘗試在地震信息發(fā)布中引入新的地震信息發(fā)布方式,即使用百度云推送技術來進行地震信息發(fā)布,并基于Android的應用來接收地震信息。
百度云推送是百度云開放平臺向開發(fā)者提供的消息推送服務,通過云端與用戶端之間建立穩(wěn)定、可靠的長連接來為開發(fā)者提供向用戶端實時推送消息的服務。
百度云推送內(nèi)容支持三種類型:通知(顯示在智能手機通知欄的通知消息)、消息(以透傳的方式發(fā)送到手機端,由開發(fā)者決定如何處理消息)、富媒體消息(推送圖片、視頻、音頻等富媒體消息);百度云推送方式支持推送到端和群用戶(百度云開放平臺,2014)。
百度云推送是面向開發(fā)者的服務,開發(fā)者使用百度云推送提供的開發(fā)庫來實現(xiàn)信息的推送。百度云推送提供的開發(fā)庫包括服務器端庫和客戶端庫,在信息發(fā)布端使用服務器端庫來推送信息,在信息接收端使用客戶端庫來接收推送的信息,信息推送細節(jié)全部由百度云推送平臺來完成,開發(fā)者無需關心。
百度云推送提供了JAVA、PHP、C#等多種語言的服務器端開發(fā)庫,同時還提供了Android、IOS版本的客戶端開發(fā)庫。本文在地震信息發(fā)布端使用了JAVA版的服務器端開發(fā)庫,在地震信息接收端選用了Android版的客戶端開發(fā)庫。
Android是一個以Linux為基礎的開放源代碼移動設備操作系統(tǒng),主要用于智能手機和平板電腦。隨著智能手機的普及,使用智能手機應用來獲取信息已經(jīng)成為當前的主流方式(李剛,2014),為了方便用戶使用,開發(fā)了基于Android的應用來接收和顯示地震信息。圖1為技術框架示意圖。
下面分別就信息的推送和接收兩方面來介紹百度云推送技術和Android的應用。
圖1 推送技術框架示意圖Fig. 1 Pushtechnology framework diagram
地震信息發(fā)布端負責產(chǎn)生各類待發(fā)布信息,調(diào)用百度云推送服務器端開發(fā)庫的信息推送接口,將待發(fā)布信息提交到百度云推送平臺,具體的信息推送任務由百度云推送平臺完成。因此實現(xiàn)地震信息推送的主要任務是通過百度云推送平臺的服務器端開發(fā)庫,將推送信息提交給百度云推送平臺。
2.1 百度云推送的使用
當前大部分智能手機應用都提供了推送服務,這些應用的推送功能基本都是由第三方云推送平臺提供,目前主流的云推送平臺有百度云推送、極光推送及個推等,這些云推送平臺都相對成熟,用戶量也比較大。選用百度云推送平臺主要是因為百度的云開放平臺提供的服務比較全面,另外目前是免費使用,功能沒有限制。
使用百度云推送服務首先需要注冊百度開發(fā)者賬號,有了百度開發(fā)者賬號就可以使用百度開放平臺提供的各類服務(如云存儲、應用引擎、云推送等),本文使用的云推送服務就是百度開放平臺提供的服務之一。
接著在百度云開放平臺創(chuàng)建一個工程,這個工程用于代表用戶開發(fā)的應用,在百度云開放平臺管理控制臺可以設置工程要使用的服務,工程可以使用各類百度服務,本文中只使用了云推送服務。創(chuàng)建完成后得到工程的ID、API_Key、Secert_Key,工程的ID、API_Key、Secert_Key用于唯一的標示用戶應用,百度云推送平臺通過這些標示決定將信息推送到指定的應用,而應用接收端也要使用這些標示向百度云推送平臺表明自己的身份,從而接收到推送的信息。
最后基于開發(fā)者使用的開發(fā)語言的不同,選用不同版本的百度云推送平臺服務器端開發(fā)庫,本文中選用了JAVA版本的開發(fā)庫,將開發(fā)庫集成到地震信息發(fā)布的項目工程中,修改開發(fā)庫的配置,把ID、API_Key、Secert_Key改為自己的,調(diào)用開發(fā)庫提供的信息推送接口,即可實現(xiàn)信息的推送。
百度云推送支持推送到端(即使用了百度云推送客戶端開發(fā)庫的終端)、支持群組消息(對消息按Tag分組,并保存Tag和用戶的關聯(lián),根據(jù)消息的Tag選擇關聯(lián)用戶來進行推送)、支持基于LBS推送(基于地理位置推送)。
百度云推送的管理控制臺提供了詳細的推送統(tǒng)計功能,可推送統(tǒng)計報表分析用戶行為和推送信息,以方便開發(fā)者更好地利用百度推送功能。
2.2 百度云推送使用效果
地震信息的發(fā)布相比其他信息的發(fā)布有其特殊性,主要表現(xiàn)在地震突發(fā)事件發(fā)生后,對信息發(fā)布的要求更高,除了要滿足信息發(fā)布的時效性、穩(wěn)定性和吞吐量之外,還需要發(fā)布設施具有異地災備的特性及良好的伸縮性(可擴展性)。為了驗證百度云推送的使用效果,對百度云推送進行了一段時間的試用,并進行了一定規(guī)模的測試。
第一從時效性方面講,信息推送要求及時送達,尤其對地震速報類信息的推送,要求在地震發(fā)生后第一時間發(fā)布給相應人員,如果信息推送延時較大,就不能滿足需求。測試發(fā)現(xiàn)百度云推送的信息在用戶一直在線(如wifi聯(lián)網(wǎng)環(huán)境下)的情況下基本是瞬間到達,延時很??;而在用戶偶爾在線情況(如2G、3G聯(lián)網(wǎng)環(huán)境下)信息推送的延時相對較大,不過也基本在幾分鐘內(nèi)就能接收到推送信息。
第二是信息推送的穩(wěn)定性方面,要求推送的信息能正確地送達到用戶端,信息無丟失或在能接受的范圍之內(nèi),通過大量的推送測試實驗發(fā)現(xiàn),百度云推送的到達率在98%以上,其中通知類的信息(單播消息)推送基本無丟失,而按群組推送的信息丟失相對比較多。
第三是信息推送的吞吐量方面(吞吐量是指同時推送的信息數(shù)量),百度云推送后臺擁有強大的服務器集群,具有較高的吞吐能力,百度云推送為自己的應用如百度地圖、搜索、新聞等千萬級應用提供了推送服務(鄭云卿等,2013)。
第四是百度云推送最適合地震信息發(fā)布的特性就是異地災備特性和伸縮性,由于地震發(fā)生時間、地點和強度的不確定性,要想實現(xiàn)異地災備的特性須構建全國性的服務器集群;其次地震前后地震信息的需求成級數(shù)增長,要想滿足巨大的并發(fā)訪問,要求系統(tǒng)具有很好的可伸縮性(可伸縮性是指在最少的時間獲得最大的吞吐量)。要想實現(xiàn)這些特性,從財力和技術等方面靠地震行業(yè)自己完成不太現(xiàn)實,而百度云推送是依托在全國性的強大IT基礎設施之上,具有較強的可伸縮性和異地災備能力。
總體來說,百度云推送各方面指標都比較理想,可滿足地震行業(yè)信息推送的需求。
Android系統(tǒng)是當前主流的智能手機操作系統(tǒng)之一,通過開發(fā)地震信息Android應用,有效提高了地震信息發(fā)布的受眾面,用戶可以隨時隨地的獲取地震信息。
3.1 Android應用信息接收的實現(xiàn)
為了接收百度云推送推送的各類信息,需要使用百度云推送客戶端開發(fā)庫,百度云推送客戶端開發(fā)庫有Android和IOS兩種版本,在Android應用中使用Android版本的客戶端開發(fā)庫。
首先將百度云推送客戶端開發(fā)庫集成到Android項目工程中,修改配置文件,將把API_Key、Secert_Key改為在自己的,API_Key、Secert_Key跟發(fā)布端的是相同的,百度云推送平臺就是根據(jù)API_Key、Secert_Key來唯一識別Android應用,進而將信息推送到相應的應用。
然后在Android項目工程中依照百度云推送客戶端開發(fā)庫集成指南,在項目工程配置文件AndroidManifest.xml中配置相應的權限,負責接送信息的Recevier及PushService。
最后對于通知類消息,需要定制通知在通知欄顯示的外觀,包括應用的圖標、應用名稱及點擊通知后觸發(fā)的行為;對于透傳的消息的顯示是完全由開發(fā)者決定如何處理,百度云推送客戶端開發(fā)庫只負責將消息推送到應用,不負責顯示和通知;對于富媒體消息(如聲音、視頻等)推送客戶端開發(fā)庫提供了默認的顯示模板,開發(fā)者也可定制顯示方式。
在Android應用中集成百度云推送是比較簡單的,按照百度云推送客戶端Android開發(fā)庫集成指南操作即可,開發(fā)者的主要任務是決定對接收到的信息的處理,比如顯示方式,是否本地保存等。
3.2 Android應用信息接收設計
信息推送已經(jīng)是當前手機應用發(fā)布最新消息的主要手段,手機應用對推送信息的接收需要進行良好的設計,包括推送信息的頻率、時間段、允許用戶定制感興趣的信息、流量、內(nèi)存占用、省電等都需要全面的考慮(鄒海等,2012)。
首先百度云推送Android客戶端開發(fā)庫實現(xiàn)了單服務單通道的工作機制,不管一部手機上安裝了多少個使用了百度云推送的應用,都使用一個后臺服務(單服務)PushService和一個Tcp長連接(單通道),這種工作機制有效地減少了內(nèi)存占用和網(wǎng)絡流量。后臺服務PushService運行于一個獨立進程,它利用一條Tcp長連接接收推送信息,它沒有和應用的主進程運行于同一進程,所以應用主進程不需要常駐內(nèi)存,當有新的推送消息時,PushService會以指定應用包名的方式,發(fā)送私有消息給應用。應用即不能接收不屬于自己的消息,也不能截取別人的消息,同時又降低了消耗。
其次手機應用的信息推送不能太頻繁,否則容易導致用戶反感而卸載應用,應用應該提供用戶關閉/開啟推送信息功能及讓用戶決定接收感興趣的推送內(nèi)容。百度云推送提供了用戶分組來實現(xiàn)推送信息的定制,用戶信息分組是靠Tag(標簽)來區(qū)分消息的,對不同類型的消息指定一個不同Tag,并把用戶跟Tag進行關聯(lián),當服務器推送信息時會根據(jù)信息的Tag選擇對應的用戶群進行推送,用戶端可以設置Tag來實現(xiàn)推送信息的定制。在地震信息Android應用中,把地震信息分為新聞、地震速報、通知和地震數(shù)據(jù)四類,用戶可以通過設置界面勾選感興趣的內(nèi)容,取消勾選則不接收相應類型的地震信息,全部不選擇則關閉了接收地震信息的推送功能。
最后地震信息Android應用對所有推送信息都保存到了本地內(nèi)嵌數(shù)據(jù)庫中,方便用戶查看;同時提供了推送信息接收時間段的設置功能。
地震信息Android客戶端除了接收推送信息外,還提供了地震目錄、地震分布圖等,圖2、圖3為部分界面的展示圖。
圖2 地震信息顯示Fig. 2 Seismic information shows
圖3 地震推送信息接收Fig. 3 Seismic pushed message receive
基于百度云推送技術的地震信息發(fā)布系統(tǒng)已經(jīng)正式投入運行,基于Android的地震信息應用也已經(jīng)發(fā)布到門戶網(wǎng)站供用戶下載使用,用戶下載達到一定數(shù)量,而且在穩(wěn)步上升中,系統(tǒng)在運行期間一直表現(xiàn)穩(wěn)定,信息推送效率并沒有因為用戶的增長而受影響,通過百度云推送控制臺提供的推送統(tǒng)計報表可以發(fā)現(xiàn),信息發(fā)布端信息推送到達率一直為100%;在信息接收端大部分型號手機表現(xiàn)穩(wěn)定,基本在1分鐘內(nèi)都能接收到推送信息,部分型號手機(如小米、魅族等采用深度定制Android系統(tǒng)的手機)上會出現(xiàn)信息接收不穩(wěn)定,出現(xiàn)延時大或接收不到的情況1。
總體來說,通過在地震信息發(fā)布中引入百度云推送技術有效地提高了信息發(fā)布的時效性和穩(wěn)定性,尤其是在重大地震發(fā)生后,將信息發(fā)布委托給第三方云平臺可能是最行之有效的發(fā)布手段之一。筆者認為,隨著云計算平臺的普及,今后各行各業(yè)會逐漸弱化自己的IT基礎設施建設,將信息服務委托給第三方專業(yè)IT云計算平臺。地震行業(yè)由于其特殊性,更應該充分利用第三方云計算平臺來提供信息服務。
百度云開放平臺,2014. http://developer.baidu.com/.
李剛,2014.瘋狂Android講義.北京:電子工業(yè)出版社.
鄭云卿,黃琦,2013.基于Android平臺的軟件自動化監(jiān)控工具的設計.計算機應用與軟件,30(2):235—238.
鄒海,李強,邱慧麗,2012.基Android C2DM服務的云端推送研究與實現(xiàn).計算機技術與發(fā)展,22(7):29—32.
Seismic Information Publishing Technology Based on Cloud Push and Android
Huang Jingang1), Yan Minzheng1)and Guo Linwang2)
1) Earthguake Administration of Shanxi Province, Taiyuan 030021, China
2) Linfen Cerstral Seismic Station, Earthquake Administration of Shanxi Prorince, Linfen 041000, China
This paper analyzes the characteristics and demands of seismic industry information publishing, the seismic information publishing is introduced in Baidu cloud push technology, discusses effect of the Baidu cloud push used in the seismic industry, develop the Android application to receive push message. Providing seismic information publishing, stability and timeliness of the audience through the Baidu cloud push technology and Android application effectively.
Cloud push; Baidu cloud push; Android; Information publishing
地震科技星火項目“山西地震信息聚合終端系統(tǒng)(XH13003Y)”
2015-01-28
黃金剛,男,生于1977年。工程師。主要從事地震臺網(wǎng)系統(tǒng)管理。E-mall:wincpt@126.com