針對(duì)移動(dòng)設(shè)備的TypeB報(bào)文訂閱推送系統(tǒng)及相應(yīng)方法
【專利摘要】本發(fā)明涉及民航數(shù)據(jù)通信業(yè)務(wù)領(lǐng)域,提供了一種針對(duì)移動(dòng)設(shè)備的TypeB報(bào)文訂閱推送系統(tǒng)及相應(yīng)的方法,所述系統(tǒng)采用C/S架構(gòu),由TypeB報(bào)文訂閱推送平臺(tái)、移動(dòng)推送平臺(tái)和客戶端組成;所述TypeB報(bào)文訂閱推送平臺(tái)包括TypeB報(bào)文分發(fā)轉(zhuǎn)換模塊、訂閱規(guī)則引擎和用戶訂閱管理模塊,所述客戶端由不同移動(dòng)平臺(tái)的客戶端庫(kù)組成。本發(fā)明提供的TypeB報(bào)文訂閱推送系統(tǒng)及相應(yīng)的方法,支持主流移動(dòng)平臺(tái)Android和iOS,并統(tǒng)一管理終端用戶訂閱,支持復(fù)雜的訂閱條件匹配,將TypeB報(bào)文轉(zhuǎn)換為更開(kāi)放的格式,并安全可靠地傳輸至用戶終端。
【專利說(shuō)明】針對(duì)移動(dòng)設(shè)備的TypeB報(bào)文訂閱推送系統(tǒng)及相應(yīng)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及民航數(shù)據(jù)通信業(yè)務(wù)領(lǐng)域,提供了一種針對(duì)移動(dòng)設(shè)備的民航領(lǐng)域TypeB報(bào)文訂閱推送系統(tǒng)及相應(yīng)方法。
【背景技術(shù)】
[0002]民航TypeB報(bào)文是一種國(guó)際通用的存儲(chǔ)轉(zhuǎn)發(fā)通信機(jī)制,大多為單向通信,由國(guó)際航協(xié)IATA根據(jù)民航領(lǐng)域快速、可靠、安全的消息傳送需求特別開(kāi)發(fā)。多年來(lái)民航業(yè)內(nèi)一直依靠TypeB通信機(jī)制來(lái)完成國(guó)際電子信息交換,并逐漸覆蓋了民航業(yè)務(wù)操作的全部領(lǐng)域。TypeB消息傳遞服務(wù)被航空公司和許多相關(guān)企業(yè)廣泛使用,包括全球分銷系統(tǒng)(GDS)、民航訂票系統(tǒng)(CRS)、航空貨運(yùn)系統(tǒng)、地面服務(wù)系統(tǒng)、機(jī)場(chǎng)相關(guān)系統(tǒng)等。
[0003]近年來(lái),移動(dòng)互聯(lián)網(wǎng)的興起給各行業(yè)帶來(lái)了新的機(jī)遇,民航業(yè)也不例外。但移動(dòng)應(yīng)用提供的服務(wù)需要實(shí)時(shí)的關(guān)鍵業(yè)務(wù)數(shù)據(jù)的支撐,如何將這些數(shù)據(jù)由數(shù)據(jù)源頭高效穩(wěn)定的傳輸至用戶端成為必須要解決的緊迫任務(wù)。在國(guó)內(nèi),中國(guó)民航已使用TypeB報(bào)文作為數(shù)據(jù)發(fā)布的載體,對(duì)內(nèi)外部子系統(tǒng)提供航空業(yè)務(wù)數(shù)據(jù)的支持,但并沒(méi)有向移動(dòng)應(yīng)用傳輸報(bào)文的通用方法,而是需要各個(gè)業(yè)務(wù)系統(tǒng)自行接入TypeB,管理訂閱、并針對(duì)不同平臺(tái)實(shí)現(xiàn)推送。由于涉及環(huán)節(jié)多,與子系統(tǒng)耦合緊密,且用戶終端環(huán)境復(fù)雜,出現(xiàn)問(wèn)題不易排查。
【發(fā)明內(nèi)容】
[0004]為了克服現(xiàn)有技術(shù)的不足,本發(fā)明設(shè)計(jì)并實(shí)現(xiàn)了一整套面向移動(dòng)應(yīng)用的TypeB報(bào)文訂閱推送系統(tǒng)及相應(yīng)的方法,支持主流移動(dòng)平臺(tái)Android和iOS,并統(tǒng)一管理終端用戶訂閱,支持復(fù)雜的訂閱條件匹配,將TypeB報(bào)文轉(zhuǎn)換為更開(kāi)放的格式,并安全可靠地傳輸至用戶終端;從而讓各業(yè)務(wù)子系統(tǒng)從數(shù)據(jù)推送的繁瑣實(shí)現(xiàn)中解放出來(lái),更多的精力專注于核心業(yè)務(wù)開(kāi)發(fā)。
[0005]本發(fā)明提供了一種民航TypeB報(bào)文訂閱推送系統(tǒng),所述系統(tǒng)采用C/S架構(gòu),由TypeB報(bào)文訂閱推送平臺(tái)、移動(dòng)推送平臺(tái)和客戶端組成;所述TypeB報(bào)文訂閱推送平臺(tái)包括TypeB報(bào)文分發(fā)轉(zhuǎn)換模塊、訂閱規(guī)則引擎和用戶訂閱管理模塊;所述客戶端由不同應(yīng)用平臺(tái)的客戶端庫(kù)組成;
所述TypeB報(bào)文分發(fā)轉(zhuǎn)換模塊使用JMS從消息隊(duì)列MQ中實(shí)時(shí)獲取TypeB報(bào)文,經(jīng)過(guò)解析分析出數(shù)據(jù)類型,進(jìn)行TypeB報(bào)文的預(yù)處理,然后調(diào)用訂閱規(guī)則引擎對(duì)報(bào)文內(nèi)容進(jìn)行訂閱規(guī)則的匹配,規(guī)則命中后,按照規(guī)則中的自定義屬性,對(duì)TypeB報(bào)文進(jìn)行定制,同時(shí)將TypeB報(bào)文轉(zhuǎn)換為定義好的XML格式,然后發(fā)往移動(dòng)推送平臺(tái);
所述訂閱規(guī)則引擎定時(shí)從數(shù)據(jù)庫(kù)加載各種報(bào)文數(shù)據(jù)的最新的用戶訂閱規(guī)則,將訂閱規(guī)則表達(dá)式文本解析生成決策樹(shù)放入內(nèi)存中;
所述用戶訂閱管理模塊為用戶設(shè)置、修改、刪除訂閱規(guī)則的接口,提供各種業(yè)務(wù)數(shù)據(jù)的訂閱模板;
所述移動(dòng)推送平臺(tái)為不同應(yīng)用平臺(tái)的移動(dòng)終端提供推送服務(wù),實(shí)時(shí)發(fā)送TypeB報(bào)文分發(fā)轉(zhuǎn)換模塊轉(zhuǎn)達(dá)的消息,支持離線發(fā)送和系統(tǒng)群發(fā)通知;
所述客戶端庫(kù)為移動(dòng)應(yīng)用接收TypeB報(bào)文提供支持,封裝了接收TypeB報(bào)文所需的后臺(tái)用戶注冊(cè)、登錄、接收數(shù)據(jù)、確認(rèn)接收消息。
[0006]進(jìn)一步地,所述TypeB報(bào)文分發(fā)轉(zhuǎn)換模塊進(jìn)一步包括:解析模塊、轉(zhuǎn)換模塊、查詢模塊、地址轉(zhuǎn)換模塊以及推送模塊:
解析模塊,解析TypeB報(bào)文,將其存入結(jié)構(gòu)化實(shí)體中;
轉(zhuǎn)換模塊,判斷TypeB報(bào)文數(shù)據(jù)類型,遍歷該數(shù)據(jù)類型的訂閱規(guī)則,調(diào)用規(guī)則引擎匹配所述訂閱規(guī)則,命中后根據(jù)數(shù)據(jù)類型和用戶訂閱規(guī)則進(jìn)行加工組裝消息,同時(shí)將TypeB報(bào)文轉(zhuǎn)換為預(yù)先定義好的XML格式;
查詢模塊,查詢用戶配置緩存中訂閱用戶的目的地址,以及相關(guān)屬性;
地址轉(zhuǎn)換模塊,將TypeB報(bào)文目的地址改為用戶的地址,如果用戶為移動(dòng)用戶的話轉(zhuǎn)發(fā)給移動(dòng)推送平臺(tái);
推送模塊,將轉(zhuǎn)換后的TypeB報(bào)文放入移動(dòng)推送平臺(tái)的接收MQ中。
[0007]進(jìn)一步地,所述推送模塊在將轉(zhuǎn)換后的TypeB報(bào)文放入移動(dòng)推送平臺(tái)的接收MQ之后更新用戶的流量信息。
[0008]進(jìn)一步地,所述訂閱規(guī)則引擎還支持?jǐn)?shù)據(jù)包裝,將同一種數(shù)據(jù)源包裝成不同的數(shù)據(jù)產(chǎn)品發(fā)布,用戶可同時(shí)訂閱包裝后的數(shù)據(jù)產(chǎn)品,并設(shè)置不同的訂閱規(guī)則。
[0009]進(jìn)一步地,所述用戶訂閱管理模塊中每個(gè)用戶每種數(shù)據(jù)類型只能有一條訂閱規(guī)貝IJ,用戶可自由組合訂閱條件,支持復(fù)雜的邏輯表達(dá)式。
[0010]進(jìn)一步地,所述移動(dòng)推送平臺(tái)將推送給客戶端的TypeB報(bào)文都先存在緩存服務(wù)器中,待收到客戶端確認(rèn)后才會(huì)刪除該報(bào)文,如果一段時(shí)間內(nèi)仍未接收到客戶端的確認(rèn),認(rèn)定該次推送失敗,下個(gè)發(fā)送周期將重新推送。
[0011]進(jìn)一步地,每條TypeB報(bào)文都有唯一的id值,客戶端在收到重發(fā)的TypeB報(bào)文時(shí)可根據(jù)id值進(jìn)行濾重處理。
[0012]進(jìn)一步地,所述應(yīng)用平臺(tái)包括=Android平臺(tái)和iOS平臺(tái)。
[0013]進(jìn)一步地,所述移動(dòng)推送平臺(tái)進(jìn)一步包括:用戶名提取模塊、用戶類型查詢模塊、緩存模塊、推送模塊和重發(fā)模塊;其中,
用戶名提取模塊,接收TypeB報(bào)文數(shù)據(jù),提取目標(biāo)用戶名;
用戶類型查詢模塊,查詢用戶信息,判斷用戶是否已注冊(cè),以及是Android用戶還是iOS用戶;
緩存模塊,緩存所述TypeB報(bào)文數(shù)據(jù);
推送模塊,如果是Android用戶,則找到相應(yīng)的ClientSession信息,發(fā)送TypeB報(bào)文;如果是有效iOS用戶的話,轉(zhuǎn)換TypeB報(bào)文格式,發(fā)送至APNS ;
重發(fā)模塊,如果Android用戶不在線或iOS用戶DeviceToken無(wú)效,暫不發(fā)送,等待用戶下次登錄或重新注冊(cè)DeviceToken時(shí)發(fā)送。
[0014]進(jìn)一步地,如果客戶端采用Android平臺(tái),貝U客戶端進(jìn)一步執(zhí)行以下步驟:
步驟1,用戶登錄APP服務(wù)端,獲得綁定的推送賬號(hào)信息;
步驟2,根據(jù)APP服務(wù)端的返回結(jié)果,判斷是否需要注冊(cè)或重新注冊(cè),如不需注冊(cè)跳至步驟5 ;步驟3,客戶端庫(kù)訪問(wèn)移動(dòng)推送平臺(tái)注冊(cè);
步驟4,注冊(cè)成功后調(diào)用APP服務(wù)端綁定新注冊(cè)的推送賬號(hào);
步驟5,訪問(wèn)移動(dòng)推送平臺(tái),獲取登錄Token ;
步驟6,使用獲得的登錄Token向APP服務(wù)端獲取本次登錄密碼串;
步驟7,使用登錄密碼串登錄移動(dòng)推送平臺(tái),客戶端庫(kù)與登錄移動(dòng)推送平臺(tái)建立長(zhǎng)連
接;
步驟8,有用戶的TypeB報(bào)文數(shù)據(jù)到達(dá)時(shí),移動(dòng)推送平臺(tái)將TypeB報(bào)文數(shù)據(jù)實(shí)時(shí)推送至客戶端;
步驟9,客戶端回應(yīng)所述移動(dòng)推送平臺(tái)一個(gè)接收數(shù)據(jù)確認(rèn)。
[0015]進(jìn)一步地,如果客戶端采用iOS平臺(tái),則客戶端進(jìn)一步執(zhí)行以下步驟:
步驟1,用戶登錄APP服務(wù)端,獲得綁定的推送賬號(hào)信息;
步驟2,APP訪問(wèn)APNS,獲取APNS返回的DeviceToken,與APP服務(wù)端的返回結(jié)果對(duì)比,判斷是否需要注冊(cè)或重新注冊(cè),如不需注冊(cè)跳至步驟5 ;
步驟3,客戶端庫(kù)訪問(wèn)移動(dòng)推送平臺(tái)注冊(cè);
步驟4,注冊(cè)成功后調(diào)用APP服務(wù)端綁定新注冊(cè)的推送賬號(hào);
步驟5,有用戶的數(shù)據(jù)到達(dá)時(shí),移動(dòng)推送平臺(tái)將數(shù)據(jù)實(shí)時(shí)推送至APNS ;
步驟6,APNS將數(shù)據(jù)發(fā)送至客戶端;
步驟7,移動(dòng)推送平臺(tái)獲取APNS的推送反饋。
[0016]本發(fā)明提供了一種Android用戶TypeB報(bào)文訂閱推送方法,包括以下步驟:
步驟Ij^FTypeB報(bào)文,將其存入結(jié)構(gòu)化實(shí)體中;
步驟2,判斷TypeB報(bào)文數(shù)據(jù)類型,遍歷該數(shù)據(jù)類型的訂閱規(guī)則,調(diào)用規(guī)則引擎匹配所述訂閱規(guī)則,命中后根據(jù)數(shù)據(jù)類型和用戶訂閱規(guī)則進(jìn)行加工組裝消息,同時(shí)將TypeB報(bào)文轉(zhuǎn)換為預(yù)先定義好的XML格式;
步驟3,查詢用戶配置緩存中訂閱用戶的目的地址,以及相關(guān)屬性;
步驟4,將TypeB報(bào)文目的地址改為用戶的接收地址,如果用戶為移動(dòng)用戶的話轉(zhuǎn)發(fā)給移動(dòng)推送平臺(tái);
步驟5,將轉(zhuǎn)換后的TypeB報(bào)文放入移動(dòng)推送平臺(tái)的接收MQ中,更新用戶的流量信息; 步驟6,用戶登錄APP服務(wù)端,獲得綁定的推送賬號(hào)信息;
步驟7,根據(jù)APP服務(wù)端的返回結(jié)果,判斷是否需要注冊(cè)或重新注冊(cè),如不需注冊(cè)跳至步驟10 ;
步驟8,客戶端庫(kù)訪問(wèn)移動(dòng)推送平臺(tái)注冊(cè);
步驟9,注冊(cè)成功后調(diào)用APP服務(wù)端綁定新注冊(cè)的推送賬號(hào);
步驟10,訪問(wèn)移動(dòng)推送平臺(tái),獲取登錄Token ;
步驟11,使用獲得的登錄Token向APP服務(wù)端獲取本次登錄密碼串; 步驟12,使用登錄密碼串登錄移動(dòng)推送平臺(tái),客戶端庫(kù)與登錄移動(dòng)推送平臺(tái)建立長(zhǎng)連
接;
步驟13,有用戶的TypeB報(bào)文數(shù)據(jù)到達(dá)時(shí),移動(dòng)推送平臺(tái)將TypeB報(bào)文數(shù)據(jù)實(shí)時(shí)推送至客戶端;
步驟14,客戶端回應(yīng)所述移動(dòng)推送平臺(tái)一個(gè)接收數(shù)據(jù)確認(rèn)。[0017]本發(fā)明還提供了一種iOS用戶TypeB報(bào)文訂閱推送方法,包括以下步驟:
步驟1,解析TypeB報(bào)文,將其存入結(jié)構(gòu)化實(shí)體中,方便后續(xù)的處理;
步驟2,判斷TypeB報(bào)文數(shù)據(jù)類型,遍歷該數(shù)據(jù)類型的訂閱規(guī)則,調(diào)用規(guī)則引擎匹配所述訂閱規(guī)則,命中后根據(jù)數(shù)據(jù)類型和用戶訂閱規(guī)則進(jìn)行加工組裝消息,同時(shí)將TypeB報(bào)文轉(zhuǎn)換為預(yù)先定義好的XML格式;
步驟3,查詢用戶配置緩存中訂閱用戶的目的地址,以及相關(guān)屬性;
步驟4,將TypeB報(bào)文目的地址改為用戶的接收地址,如果用戶為移動(dòng)用戶的話轉(zhuǎn)發(fā)給移動(dòng)推送平臺(tái);
步驟5,將轉(zhuǎn)換后的TypeB報(bào)文放入移動(dòng)推送平臺(tái)的接收MQ中,更新用戶的流量信息; 步驟6,用戶登錄APP服務(wù)端,獲得綁定的推送賬號(hào)信息;
步驟7,APP訪問(wèn)APNS,獲取APNS返回的DeviceToken,與APP服務(wù)端的返回結(jié)果對(duì)比,判斷是否需要注冊(cè)或重新注冊(cè),如不需注冊(cè)跳至步驟10 ;
步驟8,客戶端庫(kù)訪問(wèn)移動(dòng)推送平臺(tái)注冊(cè);
步驟9,注冊(cè)成功后調(diào)用APP服務(wù)端綁定新注冊(cè)的推送賬號(hào);
步驟10,有用戶的數(shù)據(jù)到達(dá)時(shí),移動(dòng)推送平臺(tái)將數(shù)據(jù)實(shí)時(shí)推送至APNS ;
步驟11,APNS將數(shù)據(jù)發(fā)送至客戶端;
步驟12,移動(dòng)推送平臺(tái)獲取APNS的推送反饋。
【專利附圖】
【附圖說(shuō)明】
[0018]圖1所示為本系統(tǒng)結(jié)構(gòu)圖;
圖2所示為本系統(tǒng)TypeB報(bào)文轉(zhuǎn)發(fā)平臺(tái)工作流程圖;
圖3所示為本系統(tǒng)移動(dòng)推送平臺(tái)工作流程圖;
圖4所示為本系統(tǒng)Android客戶端流程圖;
圖5所示為本系統(tǒng)iOS客戶端流程圖。
【具體實(shí)施方式】
[0019]如圖1所示,本發(fā)明一種應(yīng)用于移動(dòng)設(shè)備的TypeB報(bào)文訂閱推送系統(tǒng)是將民航TypeB報(bào)文推送至移動(dòng)終端的一整套解決方案,采用C/S架構(gòu),服務(wù)端包括TypeB報(bào)文分發(fā)轉(zhuǎn)換模塊、訂閱規(guī)則引擎、用戶訂閱管理、移動(dòng)推送平臺(tái),客戶端由不同平臺(tái)的客戶端庫(kù)組成。
[0020]TypeB報(bào)文分發(fā)轉(zhuǎn)換模塊使用JMS從消息隊(duì)列MQ中實(shí)時(shí)獲取TypeB報(bào)文,經(jīng)過(guò)解析分析出數(shù)據(jù)類型,進(jìn)行報(bào)文的預(yù)處理,然后調(diào)用訂閱規(guī)則引擎對(duì)報(bào)文內(nèi)容進(jìn)行訂閱規(guī)則的匹配,規(guī)則命中后,按照規(guī)則中的自定義屬性,對(duì)報(bào)文進(jìn)行定制,同時(shí)將報(bào)文轉(zhuǎn)換為預(yù)先定義好的XML格式,然后發(fā)往移動(dòng)推送平臺(tái)。
[0021]訂閱規(guī)則引擎定時(shí)從數(shù)據(jù)庫(kù)加載各種報(bào)文數(shù)據(jù)的最新的用戶訂閱規(guī)則,將訂閱規(guī)則從規(guī)則表達(dá)式文本解析生成決策樹(shù)放入內(nèi)存中。另外,訂閱規(guī)則引擎還支持?jǐn)?shù)據(jù)包裝,將同一種數(shù)據(jù)源包裝成不同的數(shù)據(jù)產(chǎn)品發(fā)布,用戶可以同時(shí)訂閱包裝后的數(shù)據(jù)產(chǎn)品,并設(shè)置不同的訂閱規(guī)則。
[0022]用戶訂閱管理為用戶設(shè)置、修改、刪除訂閱規(guī)則的接口,提供各種業(yè)務(wù)數(shù)據(jù)的訂閱模板,每個(gè)用戶每種數(shù)據(jù)類型只能有一條訂閱規(guī)則,用戶可以自由組合訂閱條件,支持復(fù)雜的邏輯表達(dá)式。訂閱規(guī)則舉例:
(({IssueOffice:SZX485:SZX485}O {IssueOffice:YCU100:YCU 100})A {BookOffice: BJSl 15: BJSl 15})表示用戶訂閱該種報(bào)文中 BookOffice 為 BJSl 15 且IssueOffice 為 SZX485 或 YCUlOO 的數(shù)據(jù)。
[0023]如圖2所示,TypeB報(bào)文分發(fā)轉(zhuǎn)換模塊收到TypeB報(bào)文轉(zhuǎn)發(fā)至移動(dòng)推送平臺(tái)的過(guò)程如下:
步驟1,解析TypeB報(bào)文,將其存入結(jié)構(gòu)化實(shí)體中,方便后續(xù)的處理;
步驟2,判斷報(bào)文數(shù)據(jù)類型,遍歷該數(shù)據(jù)類型的訂閱規(guī)則,調(diào)用規(guī)則引擎匹配規(guī)則,命中后根據(jù)數(shù)據(jù)類型和用戶訂閱規(guī)則進(jìn)行加工組裝消息,同時(shí)將報(bào)文轉(zhuǎn)換為預(yù)先定義好的XML格式;
步驟3,查詢用戶配置緩存中訂閱用戶的目的地址,以及相關(guān)屬性;
步驟4,將報(bào)文目的地址改為用戶的接收地址,如果用戶為移動(dòng)用戶的話轉(zhuǎn)發(fā)給移動(dòng)推送平臺(tái);
步驟5,將轉(zhuǎn)換后的新報(bào)文放入移動(dòng)推送平臺(tái)的接收MQ中,更新用戶的流量信息。
[0024]移動(dòng)推送平臺(tái)統(tǒng)一管理客戶端后臺(tái)推送用戶,對(duì)Android平臺(tái)來(lái)說(shuō),客戶端經(jīng)過(guò)一系列流程登錄成功后,與移動(dòng)推送平臺(tái)建立長(zhǎng)連接,并定期向平臺(tái)發(fā)送心跳包保持在線,平臺(tái)在每次收到心跳包時(shí)檢測(cè)有無(wú)該用戶的數(shù)據(jù),有的話開(kāi)始發(fā)送。發(fā)送時(shí)用戶的初始窗口設(shè)為一個(gè)值,發(fā)送一條數(shù)據(jù)該值減1,收到一條數(shù)據(jù)確認(rèn)時(shí)加1,當(dāng)用戶的窗口值低于低水位時(shí),暫停發(fā)送,等待窗口值恢復(fù)到高水位再繼續(xù)發(fā)送,從而避免客戶端接收過(guò)慢造成的流量沖擊。
[0025]為了確保TypeB報(bào)文可靠到達(dá),每條推送給客戶端的報(bào)文都會(huì)先存在緩存服務(wù)器中,待收到客戶端確認(rèn)后才會(huì)刪除該報(bào)文,如果一段時(shí)間內(nèi)仍未接收到客戶端的確認(rèn),認(rèn)為該次推送失敗,下個(gè)發(fā)送周期將重新推送,從而保證了報(bào)文送達(dá)的可靠性。由于每條消息都有唯一的id值,所以客戶端在收到重發(fā)的報(bào)文時(shí)可以根據(jù)id值進(jìn)行濾重處理,以消除網(wǎng)絡(luò)異常時(shí)可能重發(fā)數(shù)據(jù)造成的影響。
[0026]當(dāng)數(shù)據(jù)到達(dá)而用戶不在線時(shí),移動(dòng)推送平臺(tái)將消息進(jìn)行存儲(chǔ),待用戶下次上線后按序繼續(xù)發(fā)送。
[0027]對(duì)于iOS平臺(tái),由于采用的蘋(píng)果公司官方提供的APNS服務(wù),所以移動(dòng)推送平臺(tái)與客戶端的交互簡(jiǎn)單很多,客戶端不需要直接與移動(dòng)推送平臺(tái)建立連接,而是連接APNS,用戶的數(shù)據(jù)到達(dá)時(shí),移動(dòng)推送平臺(tái)使用客戶端登記的DeviceToken將消息發(fā)送給APNS,并設(shè)置有效時(shí)間,由APNS將消息推送至終端設(shè)備。移動(dòng)推送平臺(tái)同時(shí)起線程監(jiān)聽(tīng)APNS提供的Feedback服務(wù),如某些DeviceToken失效,將用戶置為不在線,等待用戶下次注冊(cè)新DeviceToken后繼續(xù)推送消息。
[0028]如圖3所示,移動(dòng)推送平臺(tái)接收到轉(zhuǎn)發(fā)的消息或是在控制臺(tái)發(fā)送通知時(shí)推送過(guò)程如下:
步驟1,接收數(shù)據(jù),提取目標(biāo)用戶名;
步驟2,查詢用戶,判斷用戶是否已注冊(cè),是Android還是iOS用戶;
步驟3,保存數(shù)據(jù)至數(shù)據(jù)緩存; 步驟4, Android用戶找到相應(yīng)的ClientSession信息,發(fā)送報(bào)文;iOS用戶有效的話,轉(zhuǎn)換報(bào)文格式,發(fā)送至APNS ;
步驟5,如Android用戶不在線或iOS用戶DeviceToken無(wú)效,暫不發(fā)送,等待用戶下次登錄或重新注冊(cè)DeviceToken時(shí)發(fā)送。
[0029]用戶可以在多個(gè)移動(dòng)終端使用本TypeB報(bào)文轉(zhuǎn)換和推送系統(tǒng),對(duì)于同一個(gè)移動(dòng)應(yīng)用同一個(gè)賬號(hào)而言,后使用的客戶端將會(huì)使之前登錄的客戶端強(qiáng)制下線,新數(shù)據(jù)將發(fā)送至新登錄的客戶端。
[0030]客戶端為了實(shí)時(shí)獲得推送的報(bào)文,需要保持與移動(dòng)推送平臺(tái)或APNS的長(zhǎng)連接,其中Android客戶端主要包括如下步驟,如圖4所示:
步驟I,用戶登錄APP服務(wù)端,獲得綁定的推送賬號(hào)信息;
步驟2,根據(jù)APP服務(wù)端的返回結(jié)果,判斷是否需要注冊(cè)或重新注冊(cè),如不需注冊(cè)跳至步驟5 ;
步驟3,客戶端庫(kù)訪問(wèn)移動(dòng)推送平臺(tái)注冊(cè);
步驟4,注冊(cè)成功后調(diào)用APP服務(wù)端綁定新注冊(cè)的推送賬號(hào);
步驟5,訪問(wèn)移動(dòng)推送平臺(tái),獲取登錄Token ;
步驟6,使用獲得的登錄Token向APP服務(wù)端獲取本次登錄密碼串;
步驟7,使用登錄密碼串登錄移動(dòng)推送平臺(tái),客戶端庫(kù)與登錄移動(dòng)推送平臺(tái)建立長(zhǎng)連
接;
步驟8,有用戶的數(shù)據(jù)到達(dá)時(shí),移動(dòng)推送平臺(tái)將數(shù)據(jù)實(shí)時(shí)推送至客戶端;
步驟9,客戶端回應(yīng)一個(gè)接收數(shù)據(jù)確認(rèn)。
[0031]iOS客戶端包括如下步驟,如圖5所示:
步驟1,用戶登錄APP服務(wù)端,獲得綁定的推送賬號(hào)信息;
步驟2,APP訪問(wèn)APNS,獲取APNS返回的DeviceToken,與APP服務(wù)端的返回結(jié)果對(duì)比,判斷是否需要注冊(cè)或重新注冊(cè),如不需注冊(cè)跳至步驟5 ;
步驟3,客戶端庫(kù)訪問(wèn)移動(dòng)推送平臺(tái)注冊(cè);
步驟4,注冊(cè)成功后調(diào)用APP服務(wù)端綁定新注冊(cè)的推送賬號(hào);
步驟5,有用戶的數(shù)據(jù)到達(dá)時(shí),移動(dòng)推送平臺(tái)將數(shù)據(jù)實(shí)時(shí)推送至APNS ;
步驟6,APNS將數(shù)據(jù)發(fā)送至APP ;
步驟7,移動(dòng)平臺(tái)獲取APNS的推送反饋。
[0032]本發(fā)明在民航領(lǐng)域機(jī)票分銷業(yè)務(wù)上,可以應(yīng)用于CRS OfficeQ信息向移動(dòng)終端設(shè)備的推送,例如:SZX485的代理人用戶希望獲得OfficeQ中航班變更的最新通知,此前,這只能通過(guò)用戶人工登錄CRS主機(jī)的前端系統(tǒng)使用指令進(jìn)行查詢,費(fèi)力且容易遺漏,非常不便。現(xiàn)在只需在本發(fā)明的客戶端庫(kù)基礎(chǔ)上開(kāi)發(fā)一個(gè)CRS移動(dòng)前端APP,調(diào)用接口訂閱該Office下SC類型的航班變更Q,訂閱規(guī)則:({Office: BJS187: SZX485}A{ResonType:SC: SZX485}),之后主機(jī)如有相關(guān)Q廣生,用戶的移動(dòng)終端將自動(dòng)提不相關(guān)內(nèi)容,如:
<Push0PQXQI temNbr>2 448577 2 85</QI temNbrXOf f ice>SZX485</0fficeXQContentType>0</QContentType><ReasonCode>SC</ReasonCode><QItemType>l</QItemType><TranID>HTH</TranID><PushAgent>31543</PushAgentXPushPid>82512</PushPidXPushDate>210CT13</PushDateXPushT ime>004620</Pu
shTimeXReadPNFlag>0</ReadPNFlagXPNRAgent>31901</
PNRAgentXPNRDate>101813</PNRDateXQContent>HXHDCF</QContentX/Push0PQ>
用戶可以根據(jù)這條消息第一時(shí)間直接進(jìn)行處理,且不受環(huán)境約束,更方便的提升分銷代理人的服務(wù)能力。
[0033]以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種針對(duì)移動(dòng)設(shè)備的民航TypeB報(bào)文訂閱推送系統(tǒng),其特征在于: 所述系統(tǒng)采用C/S架構(gòu),由TypeB報(bào)文訂閱推送平臺(tái)、移動(dòng)推送平臺(tái)和客戶端組成;所述TypeB報(bào)文訂閱推送平臺(tái)包括TypeB報(bào)文分發(fā)轉(zhuǎn)換模塊、訂閱規(guī)則引擎和用戶訂閱管理模塊; 所述客戶端由不同應(yīng)用平臺(tái)的客戶端庫(kù)組成; 所述TypeB報(bào)文分發(fā)轉(zhuǎn)換模塊使用JMS從消息隊(duì)列MQ中實(shí)時(shí)獲取TypeB報(bào)文,經(jīng)過(guò)解析分析出數(shù)據(jù)類型,進(jìn)行TypeB報(bào)文的預(yù)處理,然后調(diào)用訂閱規(guī)則引擎對(duì)報(bào)文內(nèi)容進(jìn)行訂閱規(guī)則的匹配,規(guī)則命中后,按照規(guī)則中的自定義屬性,對(duì)TypeB報(bào)文進(jìn)行定制,同時(shí)將TypeB報(bào)文轉(zhuǎn)換為定義好的XML格式,然后發(fā)往移動(dòng)推送平臺(tái); 所述訂閱規(guī)則引擎定時(shí)從數(shù)據(jù)庫(kù)加載各種報(bào)文數(shù)據(jù)的最新的用戶訂閱規(guī)則,將訂閱規(guī)則表達(dá)式文本解析生成決策樹(shù)放入內(nèi)存中; 所述用戶訂閱管理模塊為用戶設(shè)置、修改、刪除訂閱規(guī)則的接口,提供各種業(yè)務(wù)數(shù)據(jù)的訂閱模板; 所述移動(dòng)推送平臺(tái)為不同應(yīng)用平臺(tái)的移動(dòng)終端提供推送服務(wù),實(shí)時(shí)發(fā)送TypeB報(bào)文分發(fā)轉(zhuǎn)換模塊轉(zhuǎn)達(dá)的消息,支持離線發(fā)送和系統(tǒng)群發(fā)通知; 所述客戶端庫(kù)為移動(dòng)應(yīng)用接收TypeB報(bào)文提供支持,封裝了接收TypeB報(bào)文所需的后臺(tái)用戶注冊(cè)、登錄、接收數(shù)據(jù)、確認(rèn)接收消息。
2.如權(quán)利要求1所述的系統(tǒng),其特征在于:所述TypeB報(bào)文分發(fā)轉(zhuǎn)換模塊進(jìn)一步包括:解析模塊、轉(zhuǎn)換模塊、查詢模塊、地址轉(zhuǎn)換模塊以及推送模塊: 解析模塊,解析TypeB報(bào)文,將其存入結(jié)構(gòu)化實(shí)體中; 轉(zhuǎn)換模塊,判斷TypeB報(bào)文數(shù)據(jù)類型,遍歷該數(shù)據(jù)類型的訂閱規(guī)則,調(diào)用規(guī)則引擎匹配所述訂閱規(guī)則,命中后根據(jù)數(shù)據(jù)類型和用戶訂閱規(guī)則進(jìn)行加工組裝消息,同時(shí)將TypeB報(bào)文轉(zhuǎn)換為預(yù)先定義好的XML格式; 查詢模塊,查詢用戶配置緩存中訂閱用戶的目的地址,以及相關(guān)屬性; 地址轉(zhuǎn)換模塊,將TypeB報(bào)文目的地址改為用戶的地址,如果用戶為移動(dòng)用戶的話轉(zhuǎn)發(fā)給移動(dòng)推送平臺(tái); 推送模塊,將轉(zhuǎn)換后的TypeB報(bào)文放入移動(dòng)推送平臺(tái)的接收MQ中。
3.如權(quán)利要求2所述的系統(tǒng),所述推送模塊在將轉(zhuǎn)換后的TypeB報(bào)文放入移動(dòng)推送平臺(tái)的接收MQ之后更新用戶的流量信息。
4.如權(quán)利要求1-3之一所述的系統(tǒng),所述訂閱規(guī)則引擎還支持?jǐn)?shù)據(jù)包裝,將同一種數(shù)據(jù)源包裝成不同的數(shù)據(jù)產(chǎn)品發(fā)布,用戶可同時(shí)訂閱包裝后的數(shù)據(jù)產(chǎn)品,并設(shè)置不同的訂閱規(guī)則。
5.如權(quán)利要求1-3之一所述的系統(tǒng),所述用戶訂閱管理模塊中每個(gè)用戶每種數(shù)據(jù)類型只能有一條訂閱規(guī)則,用戶可自由組合訂閱條件,支持復(fù)雜的邏輯表達(dá)式。
6.如權(quán)利要求1-3之一所述的系統(tǒng),所述移動(dòng)推送平臺(tái)將推送給客戶端的TypeB報(bào)文都先存在緩存服務(wù)器中,待收到客戶端確認(rèn)后才會(huì)刪除該報(bào)文,如果一段時(shí)間內(nèi)仍未接收到客戶端的確認(rèn),認(rèn)定該次推送失敗,下個(gè)發(fā)送周期將重新推送。
7.如權(quán)利要求6所述的系統(tǒng),每條TypeB報(bào)文都有唯一的id值,客戶端在收到重發(fā)的TypeB報(bào)文時(shí)可根據(jù)id值進(jìn)行濾重處理。
8.如權(quán)利要求1-3之一所述的系統(tǒng),所述應(yīng)用平臺(tái)包括=Android平臺(tái)和iOS平臺(tái)。
9.如權(quán)利要求8所述的系統(tǒng),所述移動(dòng)推送平臺(tái)進(jìn)一步包括:用戶名提取模塊、用戶類型查詢模塊、緩存模塊、推送模塊和重發(fā)模塊;其中, 用戶名提取模塊,接收TypeB報(bào)文數(shù)據(jù),提取目標(biāo)用戶名; 用戶類型查詢模塊,查詢用戶信息,判斷用戶是否已注冊(cè),以及是Android用戶還是iOS用戶; 緩存模塊,緩存所述TypeB報(bào)文數(shù)據(jù); 推送模塊,如果是Android用戶,則找到相應(yīng)的ClientSession信息,發(fā)送TypeB報(bào)文;如果是有效iOS用戶的話,轉(zhuǎn)換TypeB報(bào)文格式,發(fā)送至APNS ; 重發(fā)模塊,如果Android用戶不在線或iOS用戶DeviceToken無(wú)效,暫不發(fā)送,等待用戶下次登錄或重新注冊(cè)DeviceToken時(shí)發(fā)送。
10.如權(quán)利要求8所述的系統(tǒng),如果客戶端采用Android平臺(tái),則客戶端進(jìn)一步執(zhí)行以下步驟: 步驟1,用戶登錄APP服務(wù)端,獲得綁定的推送賬號(hào)信息; 步驟2,根據(jù)APP服務(wù)端的返回結(jié)果,判斷是否需要注冊(cè)或重新注冊(cè),如不需注冊(cè)跳至步驟5 ; 步驟3,客戶端庫(kù)訪問(wèn)移動(dòng)推送平臺(tái)注冊(cè); 步驟4,注冊(cè)成功后調(diào)用APP服務(wù)端綁定新注冊(cè)的推送賬號(hào); 步驟5,訪問(wèn)移動(dòng)推送平臺(tái),獲取登錄Token ; 步驟6,使用獲得的登錄Token向APP服務(wù)端獲取本次登錄密碼串; 步驟7,使用登錄密碼串登錄移動(dòng)推送平臺(tái),客戶端庫(kù)與登錄移動(dòng)推送平臺(tái)建立長(zhǎng)連接; 步驟8,有用戶的TypeB報(bào)文數(shù)據(jù)到達(dá)時(shí),移動(dòng)推送平臺(tái)將TypeB報(bào)文數(shù)據(jù)實(shí)時(shí)推送至客戶端; 步驟9,客戶端回應(yīng)所述移動(dòng)推送平臺(tái)一個(gè)接收數(shù)據(jù)確認(rèn)。
11.如權(quán)利要求8所述的系統(tǒng),如果客戶端采用iOS平臺(tái),則客戶端進(jìn)一步執(zhí)行以下步驟: 步驟1,用戶登錄APP服務(wù)端,獲得綁定的推送賬號(hào)信息; 步驟2,APP訪問(wèn)APNS,獲取APNS返回的DeviceToken,與APP服務(wù)端的返回結(jié)果對(duì)比,判斷是否需要注冊(cè)或重新注冊(cè),如不需注冊(cè)跳至步驟5 ; 步驟3,客戶端庫(kù)訪問(wèn)移動(dòng)推送平臺(tái)注冊(cè); 步驟4,注冊(cè)成功后調(diào)用APP服務(wù)端綁定新注冊(cè)的推送賬號(hào); 步驟5,有用戶的數(shù)據(jù)到達(dá)時(shí),移動(dòng)推送平臺(tái)將數(shù)據(jù)實(shí)時(shí)推送至APNS ; 步驟6,APNS將數(shù)據(jù)發(fā)送至客戶端; 步驟7,移動(dòng)推送平臺(tái)獲取APNS的推送反饋。
12.—種Android用戶TypeB報(bào)文訂閱推送方法,其特征在于: 步驟Ij^FTypeB報(bào)文,將其存入結(jié)構(gòu)化實(shí)體中; 步驟2,判斷TypeB報(bào)文數(shù)據(jù)類型,遍歷該數(shù)據(jù)類型的訂閱規(guī)則,調(diào)用規(guī)則引擎匹配所述訂閱規(guī)則,命中后根據(jù)數(shù)據(jù)類型和用戶訂閱規(guī)則進(jìn)行加工組裝消息,同時(shí)將TypeB報(bào)文轉(zhuǎn)換為預(yù)先定義好的XML格式; 步驟3,查詢用戶配置緩存中訂閱用戶的目的地址,以及相關(guān)屬性; 步驟4,將TypeB報(bào)文目的地址改為用戶的接收地址,如果用戶為移動(dòng)用戶的話轉(zhuǎn)發(fā)給移動(dòng)推送平臺(tái); 步驟5,將轉(zhuǎn)換后的TypeB報(bào)文放入移動(dòng)推送平臺(tái)的接收MQ中,更新用戶的流量信息; 步驟6,用戶登錄APP服務(wù)端,獲得綁定的推送賬號(hào)信息; 步驟7,根據(jù)APP服務(wù)端的返回結(jié)果,判斷是否需要注冊(cè)或重新注冊(cè),如不需注冊(cè)跳至步驟10 ; 步驟8,客戶端庫(kù)訪問(wèn)移動(dòng)推送平臺(tái)注冊(cè); 步驟9,注冊(cè)成功后調(diào)用APP服務(wù)端綁定新注冊(cè)的推送賬號(hào); 步驟10,訪問(wèn)移動(dòng)推送平臺(tái),獲取登錄Token ; 步驟11,使用獲得的登錄Token向APP服務(wù)端獲取本次登錄密碼串; 步驟12,使用登錄密碼串登錄移動(dòng)推送平臺(tái),客戶端庫(kù)與登錄移動(dòng)推送平臺(tái)建立長(zhǎng)連接; 步驟13,有用戶的 TypeB報(bào)文數(shù)據(jù)到達(dá)時(shí),移動(dòng)推送平臺(tái)將TypeB報(bào)文數(shù)據(jù)實(shí)時(shí)推送至客戶端; 步驟14,客戶端回應(yīng)所述移動(dòng)推送平臺(tái)一個(gè)接收數(shù)據(jù)確認(rèn)。
13.—種iOS用戶TypeB報(bào)文訂閱推送方法,其特征在于: 步驟1,解析TypeB報(bào)文,將其存入結(jié)構(gòu)化實(shí)體中,方便后續(xù)的處理; 步驟2,判斷TypeB報(bào)文數(shù)據(jù)類型,遍歷該數(shù)據(jù)類型的訂閱規(guī)則,調(diào)用規(guī)則引擎匹配所述訂閱規(guī)則,命中后根據(jù)數(shù)據(jù)類型和用戶訂閱規(guī)則進(jìn)行加工組裝消息,同時(shí)將TypeB報(bào)文轉(zhuǎn)換為預(yù)先定義好的XML格式; 步驟3,查詢用戶配置緩存中訂閱用戶的目的地址,以及相關(guān)屬性; 步驟4,將TypeB報(bào)文目的地址改為用戶的接收地址,如果用戶為移動(dòng)用戶的話轉(zhuǎn)發(fā)給移動(dòng)推送平臺(tái); 步驟5,將轉(zhuǎn)換后的TypeB報(bào)文放入移動(dòng)推送平臺(tái)的接收MQ中,更新用戶的流量信息; 步驟6,用戶登錄APP服務(wù)端,獲得綁定的推送賬號(hào)信息; 步驟7,APP訪問(wèn)APNS,獲取APNS返回的DeviceToken,與APP服務(wù)端的返回結(jié)果對(duì)比,判斷是否需要注冊(cè)或重新注冊(cè),如不需注冊(cè)跳至步驟10 ; 步驟8,客戶端庫(kù)訪問(wèn)移動(dòng)推送平臺(tái)注冊(cè); 步驟9,注冊(cè)成功后調(diào)用APP服務(wù)端綁定新注冊(cè)的推送賬號(hào); 步驟10,有用戶的數(shù)據(jù)到達(dá)時(shí),移動(dòng)推送平臺(tái)將數(shù)據(jù)實(shí)時(shí)推送至APNS ; 步驟11,APNS將數(shù)據(jù)發(fā)送至客戶端; 步驟12,移動(dòng)推送平臺(tái)獲取APNS的推送反饋。
【文檔編號(hào)】H04L29/06GK104023020SQ201410263030
【公開(kāi)日】2014年9月3日 申請(qǐng)日期:2014年6月13日 優(yōu)先權(quán)日:2014年6月13日
【發(fā)明者】鄒道兵, 楊永凱, 丁崢, 李兵, 李蕊, 吳洋, 劉凱, 曲雙如 申請(qǐng)人:中國(guó)民航信息網(wǎng)絡(luò)股份有限公司