黃金剛閆民正郭林旺
1)山西省地震局,太原 030021
2)山西省地震局臨汾中心地震臺,臨汾 041000
基于云推送和Android的地震信息發布技術1
黃金剛1)閆民正1)郭林旺2)
1)山西省地震局,太原 030021
2)山西省地震局臨汾中心地震臺,臨汾 041000
本文分析了地震行業信息發布的特點及需求,在地震信息發布中引入了百度云推送技術,論述了百度云推送在地震行業使用的效果,開發了Android應用接收推送信息。通過百度云推送技術及Android的應用有效地提供了地震信息發布的時效性、穩定性和受眾面。
push云推送 百度云推送 Android 信息發布
黃金剛,閆民正,郭林旺,2015.基于云推送和Android的地震信息發布技術.震災防御技術,10(4):1004—210. doi:10.11899/zzfy20150419
地震行業經過這些年的發展,地震信息量劇增,如何及時有效地將信息發布給公眾,是地震部門當前面臨的重大挑戰,主要表現為以下幾個方面:第一,地震行業的信息發布相對于其他行業有其特殊性,在沒有地震突發事件時,訪問量相對較小,而在地震事件發生時,信息訪問量會激增,尤其是在重大地震發生后傳統的信息發布機制有可能會失效;第二,重大地震發生后有可能會破壞當地的通訊基礎設施以及地震信息發布設施,導致信息無法發布出去;第三,當前地震行業的信息發布方式還比較單一,地震發生后如果按當前的發布方式也會失效,地震信息也無法及時發布。
本文根據地震信息發布的特點,嘗試在地震信息發布中引入新的地震信息發布方式,即使用百度云推送技術來進行地震信息發布,并基于Android的應用來接收地震信息。
百度云推送是百度云開放平臺向開發者提供的消息推送服務,通過云端與用戶端之間建立穩定、可靠的長連接來為開發者提供向用戶端實時推送消息的服務。
百度云推送內容支持三種類型:通知(顯示在智能手機通知欄的通知消息)、消息(以透傳的方式發送到手機端,由開發者決定如何處理消息)、富媒體消息(推送圖片、視頻、音頻等富媒體消息);百度云推送方式支持推送到端和群用戶(百度云開放平臺,2014)。
百度云推送是面向開發者的服務,開發者使用百度云推送提供的開發庫來實現信息的推送。百度云推送提供的開發庫包括服務器端庫和客戶端庫,在信息發布端使用服務器端庫來推送信息,在信息接收端使用客戶端庫來接收推送的信息,信息推送細節全部由百度云推送平臺來完成,開發者無需關心。
百度云推送提供了JAVA、PHP、C#等多種語言的服務器端開發庫,同時還提供了Android、IOS版本的客戶端開發庫。本文在地震信息發布端使用了JAVA版的服務器端開發庫,在地震信息接收端選用了Android版的客戶端開發庫。
Android是一個以Linux為基礎的開放源代碼移動設備操作系統,主要用于智能手機和平板電腦。隨著智能手機的普及,使用智能手機應用來獲取信息已經成為當前的主流方式(李剛,2014),為了方便用戶使用,開發了基于Android的應用來接收和顯示地震信息。圖1為技術框架示意圖。
下面分別就信息的推送和接收兩方面來介紹百度云推送技術和Android的應用。

圖1 推送技術框架示意圖Fig. 1 Pushtechnology framework diagram
地震信息發布端負責產生各類待發布信息,調用百度云推送服務器端開發庫的信息推送接口,將待發布信息提交到百度云推送平臺,具體的信息推送任務由百度云推送平臺完成。因此實現地震信息推送的主要任務是通過百度云推送平臺的服務器端開發庫,將推送信息提交給百度云推送平臺。
2.1 百度云推送的使用
當前大部分智能手機應用都提供了推送服務,這些應用的推送功能基本都是由第三方云推送平臺提供,目前主流的云推送平臺有百度云推送、極光推送及個推等,這些云推送平臺都相對成熟,用戶量也比較大。選用百度云推送平臺主要是因為百度的云開放平臺提供的服務比較全面,另外目前是免費使用,功能沒有限制。
使用百度云推送服務首先需要注冊百度開發者賬號,有了百度開發者賬號就可以使用百度開放平臺提供的各類服務(如云存儲、應用引擎、云推送等),本文使用的云推送服務就是百度開放平臺提供的服務之一。
接著在百度云開放平臺創建一個工程,這個工程用于代表用戶開發的應用,在百度云開放平臺管理控制臺可以設置工程要使用的服務,工程可以使用各類百度服務,本文中只使用了云推送服務。創建完成后得到工程的ID、API_Key、Secert_Key,工程的ID、API_Key、Secert_Key用于唯一的標示用戶應用,百度云推送平臺通過這些標示決定將信息推送到指定的應用,而應用接收端也要使用這些標示向百度云推送平臺表明自己的身份,從而接收到推送的信息。
最后基于開發者使用的開發語言的不同,選用不同版本的百度云推送平臺服務器端開發庫,本文中選用了JAVA版本的開發庫,將開發庫集成到地震信息發布的項目工程中,修改開發庫的配置,把ID、API_Key、Secert_Key改為自己的,調用開發庫提供的信息推送接口,即可實現信息的推送。
百度云推送支持推送到端(即使用了百度云推送客戶端開發庫的終端)、支持群組消息(對消息按Tag分組,并保存Tag和用戶的關聯,根據消息的Tag選擇關聯用戶來進行推送)、支持基于LBS推送(基于地理位置推送)。
百度云推送的管理控制臺提供了詳細的推送統計功能,可推送統計報表分析用戶行為和推送信息,以方便開發者更好地利用百度推送功能。
2.2 百度云推送使用效果
地震信息的發布相比其他信息的發布有其特殊性,主要表現在地震突發事件發生后,對信息發布的要求更高,除了要滿足信息發布的時效性、穩定性和吞吐量之外,還需要發布設施具有異地災備的特性及良好的伸縮性(可擴展性)。為了驗證百度云推送的使用效果,對百度云推送進行了一段時間的試用,并進行了一定規模的測試。
第一從時效性方面講,信息推送要求及時送達,尤其對地震速報類信息的推送,要求在地震發生后第一時間發布給相應人員,如果信息推送延時較大,就不能滿足需求。測試發現百度云推送的信息在用戶一直在線(如wifi聯網環境下)的情況下基本是瞬間到達,延時很??;而在用戶偶爾在線情況(如2G、3G聯網環境下)信息推送的延時相對較大,不過也基本在幾分鐘內就能接收到推送信息。
第二是信息推送的穩定性方面,要求推送的信息能正確地送達到用戶端,信息無丟失或在能接受的范圍之內,通過大量的推送測試實驗發現,百度云推送的到達率在98%以上,其中通知類的信息(單播消息)推送基本無丟失,而按群組推送的信息丟失相對比較多。
第三是信息推送的吞吐量方面(吞吐量是指同時推送的信息數量),百度云推送后臺擁有強大的服務器集群,具有較高的吞吐能力,百度云推送為自己的應用如百度地圖、搜索、新聞等千萬級應用提供了推送服務(鄭云卿等,2013)。
第四是百度云推送最適合地震信息發布的特性就是異地災備特性和伸縮性,由于地震發生時間、地點和強度的不確定性,要想實現異地災備的特性須構建全國性的服務器集群;其次地震前后地震信息的需求成級數增長,要想滿足巨大的并發訪問,要求系統具有很好的可伸縮性(可伸縮性是指在最少的時間獲得最大的吞吐量)。要想實現這些特性,從財力和技術等方面靠地震行業自己完成不太現實,而百度云推送是依托在全國性的強大IT基礎設施之上,具有較強的可伸縮性和異地災備能力。
總體來說,百度云推送各方面指標都比較理想,可滿足地震行業信息推送的需求。
Android系統是當前主流的智能手機操作系統之一,通過開發地震信息Android應用,有效提高了地震信息發布的受眾面,用戶可以隨時隨地的獲取地震信息。
3.1 Android應用信息接收的實現
為了接收百度云推送推送的各類信息,需要使用百度云推送客戶端開發庫,百度云推送客戶端開發庫有Android和IOS兩種版本,在Android應用中使用Android版本的客戶端開發庫。
首先將百度云推送客戶端開發庫集成到Android項目工程中,修改配置文件,將把API_Key、Secert_Key改為在自己的,API_Key、Secert_Key跟發布端的是相同的,百度云推送平臺就是根據API_Key、Secert_Key來唯一識別Android應用,進而將信息推送到相應的應用。
然后在Android項目工程中依照百度云推送客戶端開發庫集成指南,在項目工程配置文件AndroidManifest.xml中配置相應的權限,負責接送信息的Recevier及PushService。
最后對于通知類消息,需要定制通知在通知欄顯示的外觀,包括應用的圖標、應用名稱及點擊通知后觸發的行為;對于透傳的消息的顯示是完全由開發者決定如何處理,百度云推送客戶端開發庫只負責將消息推送到應用,不負責顯示和通知;對于富媒體消息(如聲音、視頻等)推送客戶端開發庫提供了默認的顯示模板,開發者也可定制顯示方式。
在Android應用中集成百度云推送是比較簡單的,按照百度云推送客戶端Android開發庫集成指南操作即可,開發者的主要任務是決定對接收到的信息的處理,比如顯示方式,是否本地保存等。
3.2 Android應用信息接收設計
信息推送已經是當前手機應用發布最新消息的主要手段,手機應用對推送信息的接收需要進行良好的設計,包括推送信息的頻率、時間段、允許用戶定制感興趣的信息、流量、內存占用、省電等都需要全面的考慮(鄒海等,2012)。
首先百度云推送Android客戶端開發庫實現了單服務單通道的工作機制,不管一部手機上安裝了多少個使用了百度云推送的應用,都使用一個后臺服務(單服務)PushService和一個Tcp長連接(單通道),這種工作機制有效地減少了內存占用和網絡流量。后臺服務PushService運行于一個獨立進程,它利用一條Tcp長連接接收推送信息,它沒有和應用的主進程運行于同一進程,所以應用主進程不需要常駐內存,當有新的推送消息時,PushService會以指定應用包名的方式,發送私有消息給應用。應用即不能接收不屬于自己的消息,也不能截取別人的消息,同時又降低了消耗。
其次手機應用的信息推送不能太頻繁,否則容易導致用戶反感而卸載應用,應用應該提供用戶關閉/開啟推送信息功能及讓用戶決定接收感興趣的推送內容。百度云推送提供了用戶分組來實現推送信息的定制,用戶信息分組是靠Tag(標簽)來區分消息的,對不同類型的消息指定一個不同Tag,并把用戶跟Tag進行關聯,當服務器推送信息時會根據信息的Tag選擇對應的用戶群進行推送,用戶端可以設置Tag來實現推送信息的定制。在地震信息Android應用中,把地震信息分為新聞、地震速報、通知和地震數據四類,用戶可以通過設置界面勾選感興趣的內容,取消勾選則不接收相應類型的地震信息,全部不選擇則關閉了接收地震信息的推送功能。
最后地震信息Android應用對所有推送信息都保存到了本地內嵌數據庫中,方便用戶查看;同時提供了推送信息接收時間段的設置功能。
地震信息Android客戶端除了接收推送信息外,還提供了地震目錄、地震分布圖等,圖2、圖3為部分界面的展示圖。

圖2 地震信息顯示Fig. 2 Seismic information shows

圖3 地震推送信息接收Fig. 3 Seismic pushed message receive
基于百度云推送技術的地震信息發布系統已經正式投入運行,基于Android的地震信息應用也已經發布到門戶網站供用戶下載使用,用戶下載達到一定數量,而且在穩步上升中,系統在運行期間一直表現穩定,信息推送效率并沒有因為用戶的增長而受影響,通過百度云推送控制臺提供的推送統計報表可以發現,信息發布端信息推送到達率一直為100%;在信息接收端大部分型號手機表現穩定,基本在1分鐘內都能接收到推送信息,部分型號手機(如小米、魅族等采用深度定制Android系統的手機)上會出現信息接收不穩定,出現延時大或接收不到的情況1。
總體來說,通過在地震信息發布中引入百度云推送技術有效地提高了信息發布的時效性和穩定性,尤其是在重大地震發生后,將信息發布委托給第三方云平臺可能是最行之有效的發布手段之一。筆者認為,隨著云計算平臺的普及,今后各行各業會逐漸弱化自己的IT基礎設施建設,將信息服務委托給第三方專業IT云計算平臺。地震行業由于其特殊性,更應該充分利用第三方云計算平臺來提供信息服務。
百度云開放平臺,2014. http://developer.baidu.com/.
李剛,2014.瘋狂Android講義.北京:電子工業出版社.
鄭云卿,黃琦,2013.基于Android平臺的軟件自動化監控工具的設計.計算機應用與軟件,30(2):235—238.
鄒海,李強,邱慧麗,2012.基Android C2DM服務的云端推送研究與實現.計算機技術與發展,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
地震科技星火項目“山西地震信息聚合終端系統(XH13003Y)”
2015-01-28
黃金剛,男,生于1977年。工程師。主要從事地震臺網系統管理。E-mall:wincpt@126.com