多平臺消息推送服務的切換方法及裝置與流程
2023-09-10 03:54:15 2

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