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