本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種多平臺(tái)消息推送服務(wù)的切換方法及裝置。
背景技術(shù):
隨著移動(dòng)互聯(lián)技術(shù)的不斷發(fā)展,移動(dòng)應(yīng)用、物聯(lián)網(wǎng)、智能設(shè)備等領(lǐng)域也隨之呈現(xiàn)出快速發(fā)展的趨勢,信息推送作為服務(wù)端和客戶端的一種重要交互手段,其在移動(dòng)設(shè)備開發(fā)中承擔(dān)著越來越重要的角色和任務(wù)。推送技術(shù)通過自動(dòng)傳送信息給用戶,減少了用戶用于網(wǎng)上搜索的時(shí)間,實(shí)現(xiàn)如業(yè)務(wù)功能提醒、營銷活動(dòng)推廣、及時(shí)聊天信息等業(yè)務(wù)交互作用。
信息推送的實(shí)現(xiàn)方式有很多種,較為成熟的做法是客戶端和服務(wù)器之間建立長久連接,以實(shí)現(xiàn)消息推送的即時(shí)性和實(shí)時(shí)性。目前,對于移動(dòng)設(shè)備來說,分別在原生的操作系統(tǒng)中集成有相應(yīng)的推送模塊以提供推送服務(wù)。然而由于google服務(wù)器在國內(nèi)所存在的流量限制;或者,一些移動(dòng)終端使用的是定制的操作系統(tǒng),而非原生操作系統(tǒng),例如,華為手機(jī)、小米手機(jī)等均使用的定制系統(tǒng),這些系統(tǒng)使用的則是手機(jī)廠商提供的推送服務(wù),例如,小米系統(tǒng)的mipush(小米推送),華為系統(tǒng)的huaweipush(華為推送)。
此外,還有一些終端設(shè)備不具備系統(tǒng)級別的服務(wù)支持,適宜采用第三方推送服務(wù),諸如極光、個(gè)推、信鴿、友盟、阿里、百度、小米、華為等。作為應(yīng)用級的信息推送平臺(tái),支持跨系統(tǒng)平臺(tái)的推送服務(wù),且往往依賴于集成同款應(yīng)用之間的相互喚醒,具有一定的穩(wěn)定性,例如集成百度推送的移動(dòng)應(yīng)用可以被另一款集成該推送的移動(dòng)應(yīng)用所喚醒,但是移動(dòng)端推送服務(wù)被系統(tǒng)回收和殺掉的概率相對較高,往往需要賦予自啟權(quán)限,很難保證推送的穩(wěn)定性。
基于上述推送服務(wù)的使用現(xiàn)狀,由于不同的終端設(shè)備上使用的推送服務(wù)不統(tǒng)一,這就導(dǎo)致對于同一個(gè)應(yīng)用來說,其消息推送的即時(shí)性和到達(dá)率低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種多平臺(tái)消息推送服務(wù)的切換方法,其主要目的在于解決現(xiàn)行方案中消息推送的即時(shí)性和到達(dá)率低的技術(shù)問題。
為實(shí)現(xiàn)上述目的,本發(fā)明提供一種多平臺(tái)消息推送服務(wù)的切換方法,該多平臺(tái)消息推送服務(wù)的切換方法包括:
當(dāng)應(yīng)用在終端設(shè)備上處于運(yùn)行狀態(tài)時(shí),對所述應(yīng)用當(dāng)前的有效推送服務(wù)的響應(yīng)情況進(jìn)行實(shí)時(shí)檢測和記錄;
在檢測到當(dāng)前的有效推送服務(wù)連續(xù)推送無響應(yīng)的次數(shù)大于第一預(yù)設(shè)閾值,或者響應(yīng)失敗的次數(shù)大于第二預(yù)設(shè)閾值時(shí),停止所述有效推送服務(wù),并從所述應(yīng)用的推送庫的推送服務(wù)隊(duì)列中選擇優(yōu)先級最高的推送服務(wù)并啟動(dòng),以作為所述應(yīng)用當(dāng)前的有效推送服務(wù)。
可選地,所述當(dāng)應(yīng)用在終端設(shè)備上處于運(yùn)行狀態(tài)時(shí),對所述應(yīng)用當(dāng)前的有效推送服務(wù)的響應(yīng)情況進(jìn)行實(shí)時(shí)檢測和記錄的步驟之前,所述多平臺(tái)消息推送服務(wù)的切換方法還包括步驟:
在偵測到需要開啟推送服務(wù)的事件時(shí),從緩存中查找存儲(chǔ)的推送服務(wù);
若在緩存中查找到存儲(chǔ)的推送服務(wù)時(shí),則啟動(dòng)存儲(chǔ)的推送服務(wù)以作為有效推送服務(wù);
若在緩存中查找不到存儲(chǔ)的推送服務(wù),則獲取當(dāng)前終端的系統(tǒng)平臺(tái),并從所述推送庫中查找與獲取的系統(tǒng)平臺(tái)匹配的推送服務(wù)作為當(dāng)前的有效推送服務(wù)。
可選地,所述當(dāng)應(yīng)用在終端設(shè)備上處于運(yùn)行狀態(tài)時(shí),對所述應(yīng)用當(dāng)前的有效推送服務(wù)的響應(yīng)情況進(jìn)行實(shí)時(shí)檢測和記錄的步驟之后,所述多平臺(tái)消息推送服務(wù)的切換方法還包括:
當(dāng)檢測到所述當(dāng)前的有效推送服務(wù)無響應(yīng)或者響應(yīng)失敗時(shí),更新所述有效推送服務(wù)對應(yīng)的困難因數(shù),其中,推送服務(wù)的無響應(yīng)或者響應(yīng)失敗的次數(shù)越多,其對應(yīng)的困難因數(shù)越高;
根據(jù)更新后的困難因數(shù),調(diào)整所述推送庫中的推送服務(wù)的排列順序,其中,推送服務(wù)的困難因數(shù)越小,其優(yōu)先級越高。
可選地,所述多平臺(tái)消息推送服務(wù)的切換方法還包括:
在偵測到需要開啟推送服務(wù)的事件時(shí),檢測當(dāng)前終端是否支持原生系統(tǒng)級推送服務(wù);
若支持,則啟動(dòng)所述原生系統(tǒng)級推送服務(wù)作為所述有效推送服務(wù)的輔助通道,其中,在檢測到當(dāng)前的有效推送服務(wù)無響應(yīng)或者響應(yīng)失敗時(shí),基于所述原生系統(tǒng)級推送服務(wù)進(jìn)行消息推送。
可選地,所述多平臺(tái)消息推送服務(wù)的切換方法還包括:
在所述有效推送服務(wù)的運(yùn)行過程中,若接收到遠(yuǎn)端發(fā)送的控制指令時(shí),根據(jù)所述控制指令執(zhí)行對應(yīng)的推送服務(wù)控制動(dòng)作。
此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提供一種多平臺(tái)消息推送服務(wù)的切換裝置,該多平臺(tái)消息推送服務(wù)的切換裝置包括:
檢測模塊,用于當(dāng)應(yīng)用在終端設(shè)備上處于運(yùn)行狀態(tài)時(shí),對所述應(yīng)用當(dāng)前的有效推送服務(wù)的響應(yīng)情況進(jìn)行實(shí)時(shí)檢測和記錄;
切換模塊,用于在檢測到當(dāng)前的有效推送服務(wù)連續(xù)推送無響應(yīng)的次數(shù)大于第一預(yù)設(shè)閾值,或者響應(yīng)失敗的次數(shù)大于第二預(yù)設(shè)閾值時(shí),停止所述有效推送服務(wù),并從所述應(yīng)用的推送庫的推送服務(wù)隊(duì)列中選擇優(yōu)先級最高的推送服務(wù)并啟動(dòng),以作為所述應(yīng)用當(dāng)前的有效推送服務(wù)。
可選地,所述多平臺(tái)消息推送服務(wù)的切換裝置還包括:
查找模塊,用于在偵測到需要開啟推送服務(wù)的事件時(shí),從緩存中查找存儲(chǔ)的推送服務(wù);
所述切換模塊還用于:若在緩存中查找到存儲(chǔ)的推送服務(wù)時(shí),則啟動(dòng)存儲(chǔ)的推送服務(wù)以作為有效推送服務(wù);以及,若在緩存中查找不到存儲(chǔ)的推送服務(wù),則獲取當(dāng)前終端的系統(tǒng)平臺(tái),并從所述推送庫中查找與獲取的系統(tǒng)平臺(tái)匹配的推送服務(wù)作為當(dāng)前的有效推送服務(wù)。
可選地,所述多平臺(tái)消息推送服務(wù)的切換裝置還包括:
更新模塊,用于當(dāng)檢測到所述當(dāng)前的有效推送服務(wù)無響應(yīng)或者響應(yīng)失敗時(shí),更新所述有效推送服務(wù)對應(yīng)的困難因數(shù),其中,推送服務(wù)的無響應(yīng)或者響應(yīng)失敗的次數(shù)越多,其對應(yīng)的困難因數(shù)越高;
調(diào)整模塊,用于根據(jù)更新后的困難因數(shù),調(diào)整所述推送庫中的推送服務(wù)的排列順序,其中,推送服務(wù)的困難因數(shù)越小,其優(yōu)先級越高。
可選地,所述檢測模塊還用于:在偵測到需要開啟推送服務(wù)的事件時(shí),檢測當(dāng)前終端是否支持原生系統(tǒng)級推送服務(wù);
所述切換模塊還用于:若支持,則啟動(dòng)所述原生系統(tǒng)級推送服務(wù)作為所述有效推送服務(wù)的輔助通道,其中,在檢測到當(dāng)前的有效推送服務(wù)無響應(yīng)或者響應(yīng)失敗時(shí),基于所述原生系統(tǒng)級推送服務(wù)進(jìn)行消息推送。
可選地,所述切換模塊還用于:在所述有效推送服務(wù)的運(yùn)行過程中,若接收到遠(yuǎn)端發(fā)送的控制指令時(shí),根據(jù)所述控制指令執(zhí)行對應(yīng)的推送服務(wù)控制動(dòng)作。
本發(fā)明提出的多平臺(tái)消息推送服務(wù)的切換方法及裝置,當(dāng)應(yīng)用在終端設(shè)備上處于運(yùn)行狀態(tài)時(shí),對該應(yīng)用當(dāng)前的有效推送服務(wù)的響應(yīng)情況進(jìn)行實(shí)時(shí)檢測,當(dāng)檢測到當(dāng)前的有效推送服務(wù)連續(xù)推送無響應(yīng)或者響應(yīng)失敗的次數(shù)大于預(yù)設(shè)閾值時(shí),停止有效推送服務(wù),并從應(yīng)用推送庫中選擇優(yōu)先級最高的推送服務(wù)并啟動(dòng),以作為應(yīng)用當(dāng)前的有效推送服務(wù)。也就是說,本發(fā)明為應(yīng)用配置有推送庫,并且在應(yīng)用當(dāng)前使用的有效推送服務(wù)無響應(yīng)或者響應(yīng)失敗的次數(shù)達(dá)到一定的閾值時(shí),從推送庫中重新選擇新的推送服務(wù)作為有效推送服務(wù)提供推送服務(wù),以提高應(yīng)用的信息推送的即時(shí)性和到達(dá)率。
附圖說明
圖1為本發(fā)明多平臺(tái)消息推送服務(wù)的切換方法第一實(shí)施例的流程圖;
圖2為本發(fā)明多平臺(tái)消息推送服務(wù)的切換方法第一實(shí)施例中消息推送過程示意圖;
圖3為本發(fā)明多平臺(tái)消息推送服務(wù)的切換方法第二實(shí)施例的流程圖;
圖4為本發(fā)明多平臺(tái)消息推送服務(wù)的切換方法第三實(shí)施例中消息推送過程示意圖;
圖5為本發(fā)明多平臺(tái)消息推送服務(wù)的切換方法應(yīng)用場景流程示意圖;
圖6為本發(fā)明多平臺(tái)消息推送服務(wù)的切換裝置第一實(shí)施例的功能模塊示意圖。
本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說明。
具體實(shí)施方式
應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明提供一種多平臺(tái)消息推送服務(wù)的切換方法。參照圖1所示,為本發(fā)明多平臺(tái)消息推送服務(wù)的切換方法第一實(shí)施例的流程圖。
在本實(shí)施例中,該多平臺(tái)消息推送服務(wù)的切換方法包括:
步驟s10,當(dāng)應(yīng)用在終端設(shè)備上處于運(yùn)行狀態(tài)時(shí),對所述應(yīng)用當(dāng)前的有效推送服務(wù)的響應(yīng)情況進(jìn)行實(shí)時(shí)檢測和記錄;
步驟s20,在檢測到當(dāng)前的有效推送服務(wù)連續(xù)推送無響應(yīng)的次數(shù)大于第一預(yù)設(shè)閾值,或者響應(yīng)失敗的次數(shù)大于第二預(yù)設(shè)閾值時(shí),停止所述有效推送服務(wù),并從所述應(yīng)用的推送庫的推送服務(wù)隊(duì)列中選擇優(yōu)先級最高的推送服務(wù)并啟動(dòng),以作為所述應(yīng)用當(dāng)前的有效推送服務(wù)。
本發(fā)明實(shí)施例的執(zhí)行主體可以為手機(jī)、平板電腦等智能移動(dòng)終端。下文中均以執(zhí)行主體為手機(jī)為例對本發(fā)明實(shí)施例提供的方法進(jìn)行說明。
為了保證應(yīng)用的消息推送的即時(shí)性以及達(dá)到率,本申請中為應(yīng)用預(yù)先配置推送庫。通過收集和分析該應(yīng)用具體的用戶群體,在得到詳盡的用戶設(shè)備分布概況后,進(jìn)行大數(shù)據(jù)分析,組合選擇適合的推送服務(wù)進(jìn)行集成,建立與該應(yīng)用匹配的推送庫。此外,考慮到在為應(yīng)用選擇推送服務(wù)建立推送庫時(shí),勢必會(huì)造成安裝包大小的增加,選擇和折中適當(dāng)?shù)耐扑头?wù),維持安裝包大小低增長和推送效率高提升的動(dòng)態(tài)平衡也十分重要。例如,某移動(dòng)應(yīng)用a主要分布于三星和小米系統(tǒng)的設(shè)備上,則可選擇性的集成“小米推送服務(wù)”和“百度推送服務(wù)”到推送庫,其他分部數(shù)量較少的系統(tǒng)則不再考慮;應(yīng)用b主要分布于小米和華為系統(tǒng)設(shè)備,則可選擇性集成“小米推送服務(wù)”和“華為推送服務(wù)”,其他分部數(shù)量較少的系統(tǒng)則不再考慮。
例如,對于目標(biāo)應(yīng)用a,預(yù)先設(shè)置的推送庫中有推送服務(wù)s1、推送服務(wù)s2、推送服務(wù)s3、推送服務(wù)s4。其中,推送庫中的推送服務(wù)可以是系統(tǒng)級推送服務(wù),也可以是應(yīng)用級推送服務(wù)。
對于應(yīng)用來說,在偵測到一些特定的開始事件時(shí),則要開啟推送服務(wù),例如,上述開始事件可以是應(yīng)用進(jìn)行前后臺(tái)切換、網(wǎng)絡(luò)變換、登錄、開啟應(yīng)用等。需要說明的是,下文中所說的有效推送服務(wù)是指應(yīng)用當(dāng)前所使用的推送服務(wù)。在應(yīng)用每次變更推送服務(wù)后,即選擇新的推送服務(wù)后,可以將變更后的推送服務(wù)存儲(chǔ)至緩存區(qū)域,可以是內(nèi)存的緩存或者特定存儲(chǔ)區(qū)域的緩存中。當(dāng)應(yīng)用再次偵測到開始事件時(shí),則可以直接從緩存中獲取存儲(chǔ)的緩存服務(wù),作為當(dāng)前的有效緩存服務(wù)。
可以理解的是,應(yīng)用在首次開啟推送服務(wù)時(shí),可以選擇推送庫中的一個(gè)推送服務(wù)作為備用的推送服務(wù)?;蛘?,在在其他實(shí)施例中,可以采用下述方式選擇一個(gè)推送服務(wù)作為當(dāng)前的有效推送服務(wù)。
步驟s10之前,所述多平臺(tái)消息推送服務(wù)的切換方法還包括步驟:
在偵測到需要開啟推送服務(wù)的事件時(shí),從緩存中查找存儲(chǔ)的推送服務(wù);
若在緩存中查找到存儲(chǔ)的推送服務(wù)時(shí),則啟動(dòng)存儲(chǔ)的推送服務(wù)以作為有效推送服務(wù);
若在緩存中查找不到存儲(chǔ)的推送服務(wù),則獲取當(dāng)前終端的系統(tǒng)平臺(tái),并從所述推送庫中查找與獲取的系統(tǒng)平臺(tái)匹配的推送服務(wù)作為當(dāng)前的有效推送服務(wù)。
在偵測到需要開啟推送服務(wù)的開始事件時(shí),從緩存中查找存儲(chǔ)的推送服務(wù),可以先從緩存中查找緩存服務(wù),若有,則直接使用緩存中的推送服務(wù)作為最佳推送服務(wù),否則,根據(jù)當(dāng)前終端設(shè)備的系統(tǒng)從推送庫中選擇較高適配性的推送服務(wù)作為當(dāng)前的有效推送服務(wù)。例如,對于華為手機(jī)來說,其適配度最高的是華為系統(tǒng)提供的huaweipush。如果推送庫中的沒有與當(dāng)前的終端設(shè)備完全適配的推送服務(wù),則選擇推送庫的推送服務(wù)隊(duì)列中默認(rèn)的優(yōu)先級最高的推送服務(wù),其中,預(yù)先根據(jù)各個(gè)推送服務(wù)的情況將推送庫中的所有推送服務(wù)按照默認(rèn)的優(yōu)先級進(jìn)行排序,建立推送服務(wù)隊(duì)列。默認(rèn)的優(yōu)先級可以在配置推送庫時(shí)預(yù)先設(shè)置。
在為應(yīng)用選擇了有效推送服務(wù)之后,啟動(dòng)該有效推送服務(wù),使其處于激活狀態(tài),為該應(yīng)用提供推送服務(wù),并且,在選擇啟動(dòng)選擇的有效推送服務(wù)之后,將選擇的優(yōu)先級最高的推送服務(wù)存儲(chǔ)至緩存中,在存儲(chǔ)時(shí),可以存儲(chǔ)其標(biāo)識(shí)信息。此外,對于當(dāng)前的有效推送服務(wù)的響應(yīng)情況進(jìn)行實(shí)時(shí)檢測,以及,對其推送服務(wù)的連續(xù)推送無響應(yīng)的次數(shù)、以及響應(yīng)失敗的次數(shù)進(jìn)行統(tǒng)計(jì)。
參照圖2所示,一般情況下,一次完整的推送過程為101至105、201-204,其中,過程101至105為向推送控制器注冊的注冊流程,該過程獲取推送控制器分配的tmid(transportmechanismidentifier,用戶唯一標(biāo)識(shí)),并將其上報(bào)至應(yīng)用服務(wù)器,繼而按照過程201-204進(jìn)行消息的推送。本實(shí)施例中,對當(dāng)前的有效推送服務(wù)的響應(yīng)情況的檢測主要是對過程101至105中的注冊流程的檢測,檢測是否接收到推送控制器發(fā)送的響應(yīng)信息或者是否接收到推送控制器發(fā)送的響應(yīng)失敗的提示信息,若接收不到推送控制器發(fā)送的響應(yīng)信息,則認(rèn)為無響應(yīng),接收到推送控制器發(fā)送的響應(yīng)失敗的提示信息,則認(rèn)為響應(yīng)失敗。
在檢測到當(dāng)前的有效推送服務(wù)連續(xù)推送無響應(yīng)的次數(shù)大于第一預(yù)設(shè)閾值,或者響應(yīng)失敗的次數(shù)大于第二預(yù)設(shè)閾值時(shí),停止有效推送服務(wù),并從應(yīng)用的推送庫中選擇優(yōu)先級最高的推送服務(wù)并啟動(dòng),以作為應(yīng)用當(dāng)前的有效推送服務(wù)。其中,第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值根據(jù)需要預(yù)先設(shè)置。當(dāng)檢測到響應(yīng)失敗次數(shù)或者無響應(yīng)次數(shù)達(dá)到上述設(shè)置的閾值時(shí),則判定需要進(jìn)行推送服務(wù)的切換,此時(shí),從推送庫的推送服務(wù)隊(duì)列中選擇優(yōu)先級最高的推送服務(wù)并啟動(dòng)。
此外,可以理解的是,在選擇了排列在首位的、優(yōu)先級最高的推送服務(wù)并啟動(dòng)后,將該推送服務(wù)調(diào)整到隊(duì)尾位置,以防止下一次重復(fù)選擇同一個(gè)推送服務(wù)。
進(jìn)一步地,作為一種實(shí)施方式,對推送庫中所有的推送服務(wù)的失敗響應(yīng)次數(shù)和無響應(yīng)次數(shù)進(jìn)行統(tǒng)計(jì),以便于對推送庫中的推送服務(wù)進(jìn)行優(yōu)先級的排序。具體地,當(dāng)檢測到所述當(dāng)前的有效推送服務(wù)無響應(yīng)或者響應(yīng)失敗時(shí),更新所述有效推送服務(wù)對應(yīng)的困難因數(shù),其中,推送服務(wù)的無響應(yīng)或者響應(yīng)失敗的次數(shù)越多,其對應(yīng)的困難因數(shù)越高;根據(jù)更新后的困難因數(shù),調(diào)整所述推送庫中的推送服務(wù)的排列順序,其中,推送服務(wù)的困難因數(shù)越小,其優(yōu)先級越高。也就是說,當(dāng)檢測當(dāng)前的有效推送服務(wù)無響應(yīng)或者響應(yīng)失敗時(shí),更新其對應(yīng)的困難因數(shù),例如,可以加1;推送服務(wù)的苦難因數(shù)越高,其優(yōu)先級越低,則排列在推送服務(wù)隊(duì)列中靠后的位置。通過這樣的方式,對推送庫中的所有推送服務(wù)的按照優(yōu)先級的順序進(jìn)行排列。
此外,需要說明的是,本實(shí)施例提出的方法可以應(yīng)用于android、ios、windowsphone等任何系統(tǒng)的手機(jī)、平板或其他移動(dòng)終端,本實(shí)施例只是以安卓系統(tǒng)為例進(jìn)行說明,但并不局限于此。
本實(shí)施例提出的多平臺(tái)消息推送服務(wù)的切換方法,當(dāng)應(yīng)用在終端設(shè)備上處于運(yùn)行狀態(tài)時(shí),對該應(yīng)用當(dāng)前的有效推送服務(wù)的響應(yīng)情況進(jìn)行實(shí)時(shí)檢測,當(dāng)檢測到當(dāng)前的有效推送服務(wù)連續(xù)推送無響應(yīng)或者響應(yīng)失敗的次數(shù)大于預(yù)設(shè)閾值時(shí),停止有效推送服務(wù),并從應(yīng)用推送庫中選擇優(yōu)先級最高的推送服務(wù)并啟動(dòng),以作為應(yīng)用當(dāng)前的有效推送服務(wù)。也就是說,本發(fā)明為應(yīng)用配置有推送庫,并且在應(yīng)用當(dāng)前使用的有效推送服務(wù)無響應(yīng)或者響應(yīng)失敗的次數(shù)達(dá)到一定的閾值時(shí),從推送庫中重新選擇新的推送服務(wù)作為有效推送服務(wù)提供推送服務(wù),以提高應(yīng)用的信息推送的即時(shí)性和到達(dá)率。
基于第一實(shí)施例提出本發(fā)明多平臺(tái)消息推送服務(wù)的切換方法的第二實(shí)施例。參照圖3所示,在本實(shí)施例中,該多平臺(tái)消息推送服務(wù)的切換方法還包括:
步驟s30,在偵測到需要開啟推送服務(wù)的事件時(shí),檢測當(dāng)前終端是否支持原生系統(tǒng)級推送服務(wù);
步驟s40,若支持,則啟動(dòng)所述原生系統(tǒng)級推送服務(wù)作為所述有效推送服務(wù)的輔助通道,其中,在檢測到當(dāng)前的有效推送服務(wù)無響應(yīng)或者響應(yīng)失敗時(shí),基于所述原生系統(tǒng)級推送服務(wù)進(jìn)行消息推送。
在該實(shí)施例中,兼容當(dāng)前終端設(shè)備的原生操作系統(tǒng)所提供的推送服務(wù)作為輔助通道。以安卓系統(tǒng)為例,以google提供的gcm(googlecloudmessaging)為例,本實(shí)施例中兼容gcm心跳機(jī)制作為輔助通道。需要說明的是,由于國內(nèi)2g和移動(dòng)3g的nat超時(shí)時(shí)間都小于gcm心跳時(shí)間,tcp長連接必然無法?;睿?dāng)心跳失敗后,每次都要等到心跳時(shí)間后,進(jìn)行心跳失敗重連后才能收到推送;即使如此,但是gcm作為?;钚粤己玫南到y(tǒng)支持服務(wù),在支持gcm的設(shè)備上,可以使用gcm作為輔助通道來增加新消息的及時(shí)性。服務(wù)器在發(fā)現(xiàn)當(dāng)前的有效推送服務(wù)的推送失敗情況下,可以通過gcm作為輔助通道告知終端設(shè)備有信息到達(dá),并嘗試喚醒推送庫,或者切換至推送庫中其他推送服務(wù)。以進(jìn)一步提高應(yīng)用的消息推送的即時(shí)性和到達(dá)率低。
基于第一實(shí)施例或者第二實(shí)施例提出本發(fā)明多平臺(tái)消息推送服務(wù)的切換方法的第三實(shí)施例。在本實(shí)施例中,該多平臺(tái)消息推送服務(wù)的切換方法還包括:
在所述有效推送服務(wù)的運(yùn)行過程中,若接收到遠(yuǎn)端發(fā)送的控制指令時(shí),根據(jù)所述控制指令執(zhí)行對應(yīng)的推送服務(wù)控制動(dòng)作。
在該實(shí)施例中,還可以提供應(yīng)用本身與應(yīng)用服務(wù)器之間的通信通道,并互相阻塞式的監(jiān)聽對方的信息,在具體的實(shí)現(xiàn)層次上與推送服務(wù)并沒有關(guān)聯(lián)關(guān)系。應(yīng)用在接收到應(yīng)用服務(wù)器發(fā)送的推送控制指令時(shí),例如,切換、開啟、停止、暫停、恢復(fù)等,可以直接根據(jù)該控制指令執(zhí)行對應(yīng)的推送服務(wù)控制動(dòng)作。參照圖4所示,在應(yīng)用內(nèi)配置有端內(nèi)通信模塊,通過該模塊接收應(yīng)用服務(wù)器發(fā)送的推送控制指令,并根據(jù)該指令執(zhí)行對應(yīng)的推送服務(wù)控制動(dòng)作。關(guān)于具體的推送指令,可以根據(jù)需要設(shè)置。例如,可以設(shè)置為:push_switch_next:向下切換,按照設(shè)定的切換算法進(jìn)行一次切換;push_switch_[x]:切換為具體的某推送平臺(tái);push_start:開啟當(dāng)前選定的推送服務(wù);push_stop:停止當(dāng)前選定的推送服務(wù);push_pause:暫停當(dāng)前選定的推送服務(wù);push_resume:恢復(fù)當(dāng)前選定的推送服務(wù)等。例如,當(dāng)用戶發(fā)現(xiàn)接收不到應(yīng)用的消息推送時(shí),可以將該問題反饋至應(yīng)用服務(wù)器,應(yīng)用服務(wù)器接收到反饋信息后,可以向終端發(fā)送推送控制指令,例如發(fā)送push_switch_next控制指令,終端根據(jù)接收到的該指令,切換至推送庫中的推送隊(duì)列中的下一個(gè)推送服務(wù)作為當(dāng)前的有效推送服務(wù),以使用戶能夠接收到消息推送。
參照圖5所示,為基于上述第一或者第二實(shí)施例提出的多平臺(tái)消息推送服務(wù)的切換方法的一具體應(yīng)用場景。
如圖所示,為應(yīng)用配置有多平臺(tái)的推送服務(wù)集成庫,包括gcm、百度推送、極光推送、小米推送、華為推送。其中,gcm推送服務(wù)作為輔助通道。過程101,在偵測到開始事件時(shí),先從內(nèi)存緩沖(internalmemory)中獲取存儲(chǔ)的推送服務(wù),若獲取不到,則從文件緩存中獲取(externalmemory)中獲取存儲(chǔ)的推送服務(wù);過程102,若仍然獲取不到,則獲取當(dāng)前終端的系統(tǒng)和設(shè)備平臺(tái)的類型,逐一判斷是否為小米系統(tǒng)、華為系統(tǒng)、魅族系統(tǒng)等等,若獲取到與當(dāng)前終端系統(tǒng)適配的推送服務(wù)類型,則將適配的推送服務(wù)初始化為當(dāng)前的有效推送服務(wù),若獲取不到,則將推送庫中預(yù)先設(shè)置的優(yōu)先級最高的推送服務(wù)作為當(dāng)前的有效推送服務(wù)。過程103,在使用當(dāng)前的有效推送服務(wù)進(jìn)行信息的推送的過程中,對于當(dāng)前的有效推送服務(wù)連續(xù)推送無響應(yīng)的次數(shù)和響應(yīng)失敗的次數(shù)進(jìn)行統(tǒng)計(jì),當(dāng)推送無響應(yīng)的次數(shù)或者響應(yīng)失敗的次數(shù)達(dá)到對應(yīng)的預(yù)設(shè)閾值時(shí),按照集成庫中推送服務(wù)的隊(duì)列進(jìn)行推送服務(wù)的切換,并將記錄的推送無響應(yīng)的次數(shù)和響應(yīng)失敗的次數(shù)清零。若推送無響應(yīng)的次數(shù)或者響應(yīng)失敗的次數(shù)未達(dá)到對應(yīng)的預(yù)設(shè)閾值,則繼續(xù)進(jìn)行tmid的請求,并根據(jù)請求的結(jié)果,例如無響應(yīng)、響應(yīng)失敗等,對推送無響應(yīng)的次數(shù)或者響應(yīng)失敗的次數(shù)進(jìn)行更新。其中,還包括過程104,將gcm作為輔助通道來增加新消息的及時(shí)性。
本發(fā)明還提出一種多平臺(tái)消息推送服務(wù)的切換裝置。
參照圖6所示,為本發(fā)明多平臺(tái)消息推送服務(wù)的切換裝置第一實(shí)施例的功能模塊示意圖。
在該實(shí)施例中,該多平臺(tái)消息推送服務(wù)的切換裝置包括:
檢測模塊10,用于當(dāng)應(yīng)用在終端設(shè)備上處于運(yùn)行狀態(tài)時(shí),對所述應(yīng)用當(dāng)前的有效推送服務(wù)的響應(yīng)情況進(jìn)行實(shí)時(shí)檢測和記錄;
切換模塊20,用于在檢測到當(dāng)前的有效推送服務(wù)連續(xù)推送無響應(yīng)的次數(shù)大于第一預(yù)設(shè)閾值,或者響應(yīng)失敗的次數(shù)大于第二預(yù)設(shè)閾值時(shí),停止所述有效推送服務(wù),并從所述應(yīng)用的推送庫的推送服務(wù)隊(duì)列中選擇優(yōu)先級最高的推送服務(wù)并啟動(dòng),以作為所述應(yīng)用當(dāng)前的有效推送服務(wù)。
本發(fā)明實(shí)施例的執(zhí)行主體可以為手機(jī)、平板電腦等智能移動(dòng)終端。下文中均以執(zhí)行主體為手機(jī)為例對本發(fā)明實(shí)施例提供的裝置進(jìn)行說明。
為了保證應(yīng)用的消息推送的即時(shí)性以及達(dá)到率,本申請中為應(yīng)用預(yù)先配置推送庫。通過收集和分析該應(yīng)用具體的用戶群體,在得到詳盡的用戶設(shè)備分布概況后,進(jìn)行大數(shù)據(jù)分析,組合選擇適合的推送服務(wù)進(jìn)行集成,建立與該應(yīng)用匹配的推送庫。此外,考慮到在為應(yīng)用選擇推送服務(wù)建立推送庫時(shí),勢必會(huì)造成安裝包大小的增加,選擇和折中適當(dāng)?shù)耐扑头?wù),維持安裝包大小低增長和推送效率高提升的動(dòng)態(tài)平衡也十分重要。例如,某移動(dòng)應(yīng)用a主要分布于三星和小米系統(tǒng)的設(shè)備上,則可選擇性的集成“小米推送服務(wù)”和“百度推送服務(wù)”到推送庫,其他分部數(shù)量較少的系統(tǒng)則不再考慮;應(yīng)用b主要分布于小米和華為系統(tǒng)設(shè)備,則可選擇性集成“小米推送服務(wù)”和“華為推送服務(wù)”,其他分部數(shù)量較少的系統(tǒng)則不再考慮。
例如,對于目標(biāo)應(yīng)用a,預(yù)先設(shè)置的推送庫中有推送服務(wù)s1、推送服務(wù)s2、推送服務(wù)s3、推送服務(wù)s4。其中,推送庫中的推送服務(wù)可以是系統(tǒng)級推送服務(wù),也可以是應(yīng)用級推送服務(wù)。
對于應(yīng)用來說,在偵測到一些特定的開始事件時(shí),則要開啟推送服務(wù),例如,上述開始事件可以是應(yīng)用進(jìn)行前后臺(tái)切換、網(wǎng)絡(luò)變換、登錄、開啟應(yīng)用等。需要說明的是,下文中所說的有效推送服務(wù)是指應(yīng)用當(dāng)前所使用的推送服務(wù)。在應(yīng)用每次變更推送服務(wù)后,即選擇新的推送服務(wù)后,可以將變更后的推送服務(wù)存儲(chǔ)至緩存區(qū)域,可以是內(nèi)存的緩存或者特定存儲(chǔ)區(qū)域的緩存中。當(dāng)應(yīng)用再次偵測到開始事件時(shí),則可以直接從緩存中獲取存儲(chǔ)的緩存服務(wù),作為當(dāng)前的有效緩存服務(wù)。
可以理解的是,應(yīng)用在首次開啟推送服務(wù)時(shí),可以選擇推送庫中的一個(gè)推送服務(wù)作為備用的推送服務(wù)?;蛘?,在在其他實(shí)施例中,可以采用下述方式選擇一個(gè)推送服務(wù)作為當(dāng)前的有效推送服務(wù)。
具體地,所述多平臺(tái)消息推送服務(wù)的切換裝置還包括:
查找模塊,用于在偵測到需要開啟推送服務(wù)的事件時(shí),從緩存中查找存儲(chǔ)的推送服務(wù);
切換模塊20還用于:若在緩存中查找到存儲(chǔ)的推送服務(wù)時(shí),則啟動(dòng)存儲(chǔ)的推送服務(wù)以作為有效推送服務(wù);以及,若在緩存中查找不到存儲(chǔ)的推送服務(wù),則獲取當(dāng)前終端的系統(tǒng)平臺(tái),并從所述推送庫中查找與獲取的系統(tǒng)平臺(tái)匹配的推送服務(wù)作為當(dāng)前的有效推送服務(wù)。
在偵測到需要開啟推送服務(wù)的開始事件時(shí),查找模塊從緩存中查找存儲(chǔ)的推送服務(wù),可以先從緩存中查找緩存服務(wù),若有,則直接使用緩存中的推送服務(wù)作為最佳推送服務(wù),否則,根據(jù)當(dāng)前終端設(shè)備的系統(tǒng)從推送庫中選擇較高適配性的推送服務(wù)作為當(dāng)前的有效推送服務(wù)。例如,對于華為手機(jī)來說,其適配度最高的是華為系統(tǒng)提供的huaweipush。如果推送庫中的沒有與當(dāng)前的終端設(shè)備完全適配的推送服務(wù),則選擇推送庫的推送服務(wù)隊(duì)列中默認(rèn)的優(yōu)先級最高的推送服務(wù),其中,預(yù)先根據(jù)各個(gè)推送服務(wù)的情況將推送庫中的所有推送服務(wù)按照默認(rèn)的優(yōu)先級進(jìn)行排序,建立推送服務(wù)隊(duì)列。默認(rèn)的優(yōu)先級可以在配置推送庫時(shí)預(yù)先設(shè)置。
在為應(yīng)用選擇了有效推送服務(wù)之后,啟動(dòng)該有效推送服務(wù),使其處于激活狀態(tài),為該應(yīng)用提供推送服務(wù),并且,在選擇啟動(dòng)選擇的有效推送服務(wù)之后,將選擇的優(yōu)先級最高的推送服務(wù)存儲(chǔ)至緩存中,在存儲(chǔ)時(shí),可以存儲(chǔ)其標(biāo)識(shí)信息。此外,對于當(dāng)前的有效推送服務(wù)的響應(yīng)情況進(jìn)行實(shí)時(shí)檢測,以及對于當(dāng)前的有效推送服務(wù)的響應(yīng)情況進(jìn)行實(shí)時(shí)檢測,并且,對其推送服務(wù)的連續(xù)推送無響應(yīng)的次數(shù)、以及響應(yīng)失敗的次數(shù)進(jìn)行統(tǒng)計(jì)。
參照圖2所示,一般情況下,一次完整的推送過程為101至105、201-204,其中,過程101至105為向推送控制器注冊的注冊流程,該過程獲取推送控制器分配的tmid(transportmechanismidentifier,用戶唯一標(biāo)識(shí)),并將其上報(bào)至應(yīng)用服務(wù)器,繼而按照過程201-204進(jìn)行消息的推送。本實(shí)施例中,對當(dāng)前的有效推送服務(wù)的響應(yīng)情況的檢測主要是對過程101至105中的注冊流程的檢測,檢測是否接收到推送控制器發(fā)送的響應(yīng)信息或者是否接收到推送控制器發(fā)送的響應(yīng)失敗的提示信息,若接收不到推送控制器發(fā)送的響應(yīng)信息,則認(rèn)為無響應(yīng),接收到推送控制器發(fā)送的響應(yīng)失敗的提示信息,則認(rèn)為響應(yīng)失敗。
在檢測到當(dāng)前的有效推送服務(wù)連續(xù)推送無響應(yīng)的次數(shù)大于第一預(yù)設(shè)閾值,或者響應(yīng)失敗的次數(shù)大于第二預(yù)設(shè)閾值時(shí),停止有效推送服務(wù),并從應(yīng)用的推送庫中選擇優(yōu)先級最高的推送服務(wù)并啟動(dòng),以作為應(yīng)用當(dāng)前的有效推送服務(wù)。其中,第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值根據(jù)需要預(yù)先設(shè)置。當(dāng)檢測到響應(yīng)失敗次數(shù)或者無響應(yīng)次數(shù)達(dá)到上述設(shè)置的閾值時(shí),則判定需要進(jìn)行推送服務(wù)的切換,此時(shí),從推送庫的推送服務(wù)隊(duì)列中選擇優(yōu)先級最高的推送服務(wù)并啟動(dòng)。
此外,可以理解的是,在選擇了排列在首位的、優(yōu)先級最高的推送服務(wù)并啟動(dòng)后,將該推送服務(wù)調(diào)整到隊(duì)尾位置,以防止下一次重復(fù)選擇同一個(gè)推送服務(wù)。
進(jìn)一步地,作為一種實(shí)施方式,對推送庫中所有的推送服務(wù)的失敗響應(yīng)次數(shù)和無響應(yīng)次數(shù)進(jìn)行統(tǒng)計(jì),以便于對推送庫中的推送服務(wù)進(jìn)行優(yōu)先級的排序。具體地,多平臺(tái)消息推送服務(wù)的切換裝置還包括:
更新模塊,用于當(dāng)檢測到所述當(dāng)前的有效推送服務(wù)無響應(yīng)或者響應(yīng)失敗時(shí),更新所述有效推送服務(wù)對應(yīng)的困難因數(shù),其中,推送服務(wù)的無響應(yīng)或者響應(yīng)失敗的次數(shù)越多,其對應(yīng)的困難因數(shù)越高;
調(diào)整模塊,用于根據(jù)更新后的困難因數(shù),調(diào)整所述推送庫中的推送服務(wù)的排列順序,其中,推送服務(wù)的困難因數(shù)越小,其優(yōu)先級越高。
也就是說,當(dāng)檢測當(dāng)前的有效推送服務(wù)無響應(yīng)或者響應(yīng)失敗時(shí),更新其對應(yīng)的困難因數(shù),例如,可以加1;推送服務(wù)的苦難因數(shù)越高,其優(yōu)先級越低,則排列在推送服務(wù)隊(duì)列中靠后的位置。通過這樣的方式,對推送庫中的所有推送服務(wù)的按照優(yōu)先級的順序進(jìn)行排列。
此外,需要說明的是,本實(shí)施例提出可以應(yīng)用于android、ios、windowsphone等任何系統(tǒng)的手機(jī)、平板或其他移動(dòng)終端,本實(shí)施例只是以安卓系統(tǒng)為例進(jìn)行說明,但并不局限于此。
本實(shí)施例提出的多平臺(tái)消息推送服務(wù)的切換裝置,當(dāng)應(yīng)用在終端設(shè)備上處于運(yùn)行狀態(tài)時(shí),對該應(yīng)用當(dāng)前的有效推送服務(wù)的響應(yīng)情況進(jìn)行實(shí)時(shí)檢測,當(dāng)檢測到當(dāng)前的有效推送服務(wù)連續(xù)推送無響應(yīng)或者響應(yīng)失敗的次數(shù)大于預(yù)設(shè)閾值時(shí),停止有效推送服務(wù),并從應(yīng)用推送庫中選擇優(yōu)先級最高的推送服務(wù)并啟動(dòng),以作為應(yīng)用當(dāng)前的有效推送服務(wù)。也就是說,本發(fā)明為應(yīng)用配置有推送庫,并且在應(yīng)用當(dāng)前使用的有效推送服務(wù)無響應(yīng)或者響應(yīng)失敗的次數(shù)達(dá)到一定的閾值時(shí),從推送庫中重新選擇新的推送服務(wù)作為有效推送服務(wù)提供推送服務(wù),以提高應(yīng)用的信息推送的即時(shí)性和到達(dá)率。
基于第一實(shí)施例提出本發(fā)明多平臺(tái)消息推送服務(wù)的切換裝置的第二實(shí)施例。在本實(shí)施例中,該多平臺(tái)消息推送服務(wù)的切換裝置還包括:
檢測模塊10還用于:在偵測到需要開啟推送服務(wù)的事件時(shí),檢測當(dāng)前終端是否支持原生系統(tǒng)級推送服務(wù);
切換模塊20還用于:若支持,則啟動(dòng)所述原生系統(tǒng)級推送服務(wù)作為所述有效推送服務(wù)的輔助通道,其中,在檢測到當(dāng)前的有效推送服務(wù)無響應(yīng)或者響應(yīng)失敗時(shí),基于所述原生系統(tǒng)級推送服務(wù)進(jìn)行消息推送。
在該實(shí)施例中,兼容當(dāng)前終端設(shè)備的原生操作系統(tǒng)所提供的推送服務(wù)作為輔助通道。以安卓系統(tǒng)為例,以google提供的gcm(googlecloudmessaging)為例,本實(shí)施例中兼容gcm心跳機(jī)制作為輔助通道。需要說明的是,由于國內(nèi)2g和移動(dòng)3g的nat超時(shí)時(shí)間都小于gcm心跳時(shí)間,tcp長連接必然無法?;睿?dāng)心跳失敗后,每次都要等到心跳時(shí)間后,進(jìn)行心跳失敗重連后才能收到推送;即使如此,但是gcm作為?;钚粤己玫南到y(tǒng)支持服務(wù),在支持gcm的設(shè)備上,可以使用gcm作為輔助通道來增加新消息的及時(shí)性。服務(wù)器在發(fā)現(xiàn)當(dāng)前的有效推送服務(wù)的推送失敗情況下,可以通過gcm作為輔助通道告知終端設(shè)備有信息到達(dá),并嘗試喚醒推送庫,或者切換至推送庫中其他推送服務(wù)。以進(jìn)一步提高應(yīng)用的消息推送的即時(shí)性和到達(dá)率低。
基于第一實(shí)施例或者第二實(shí)施例提出本發(fā)明多平臺(tái)消息推送服務(wù)的切換裝置的第三實(shí)施例。在本實(shí)施例中,切換模塊20還用于:在所述有效推送服務(wù)的運(yùn)行過程中,若接收到遠(yuǎn)端發(fā)送的控制指令時(shí),根據(jù)所述控制指令執(zhí)行對應(yīng)的推送服務(wù)控制動(dòng)作。
在該實(shí)施例中,還可以提供應(yīng)用本身與應(yīng)用服務(wù)器之間的通信通道,并互相阻塞式的監(jiān)聽對方的信息,在具體的實(shí)現(xiàn)層次上與推送服務(wù)并沒有關(guān)聯(lián)關(guān)系。應(yīng)用在接收到應(yīng)用服務(wù)器發(fā)送的推送控制指令時(shí),例如,切換、開啟、停止、暫停、恢復(fù)等,可以直接根據(jù)該控制指令執(zhí)行對應(yīng)的推送服務(wù)控制動(dòng)作。參照圖4所示,在應(yīng)用內(nèi)配置有端內(nèi)通信模塊,通過該模塊接收應(yīng)用服務(wù)器發(fā)送的推送控制指令,并根據(jù)該指令執(zhí)行對應(yīng)的推送服務(wù)控制動(dòng)作。關(guān)于具體的推送指令,可以根據(jù)需要設(shè)置。例如,可以設(shè)置為:push_switch_next:向下切換,按照設(shè)定的切換算法進(jìn)行一次切換;push_switch_[x]:切換為具體的某推送平臺(tái);push_start:開啟當(dāng)前選定的推送服務(wù);push_stop:停止當(dāng)前選定的推送服務(wù);push_pause:暫停當(dāng)前選定的推送服務(wù);push_resume:恢復(fù)當(dāng)前選定的推送服務(wù)等。例如,當(dāng)用戶發(fā)現(xiàn)接收不到應(yīng)用的消息推送時(shí),可以將該問題反饋至應(yīng)用服務(wù)器,應(yīng)用服務(wù)器接收到反饋信息后,可以向終端發(fā)送推送控制指令,例如發(fā)送push_switch_next控制指令,終端根據(jù)接收到的該指令,切換至推送庫中的推送隊(duì)列中的下一個(gè)推送服務(wù)作為當(dāng)前的有效推送服務(wù),以使用戶能夠接收到消息推送。
需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵該非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),云端服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例的方法。
以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。