本申請涉及互聯網技術領域,尤其涉及一種消息獲取方法及裝置。
背景技術:
隨著ios平臺的普及以及互聯網技術的發(fā)展,基于ios的互聯網應用越來越多,這些互聯網應用所提供的服務場景也更加多樣化。在大多數服務場景中,互聯網應用的服務端和互聯網應用的客戶端之間需要傳遞消息。
越來越多的互聯網應用對準確傳遞消息提出了很高的要求,現有服務端與客戶端之間傳遞消息的方式已不能滿足互聯網應用的需求,因此基于ios的互聯網應用面臨著如何準確、可靠地傳遞消息的問題。
技術實現要素:
在現有技術中,基于ios的互聯網應用大都采用圖1所示方式傳遞消息。如圖1所示,互聯網應用的服務端與互聯網應用的客戶端之間傳遞消息主要包括以下幾個階段:
第一階段:互聯網應用的服務端把待發(fā)送消息和接收終端的標識打包,將打包消息發(fā)送給apns(英文全拼為:applepushnotificationservice)服務器。
第二階段:apns服務器在已注冊推送服務的終端列表中,查找有相應標識的終端作為接收終端,并把打包消息中的待發(fā)送消息發(fā)送到接收終端。
第三階段:接收終端將apns服務器發(fā)送來的消息,傳遞給安裝于所述接收終端上的互聯網應用的客戶端,并且按照設定的模式彈出通知消息。
本申請發(fā)明人跟蹤研究了上述消息傳遞過程,發(fā)現:通過apns服務器向客戶端推送消息,可能出現消息遺漏的情況,可靠性相對較低。
然而,越來越多的互聯網應用對準確傳遞消息提出了很高的要求,現有基于apns服務器推送消息的方式已不能滿足互聯網應用的需求,因此基于ios的互聯網應用面臨著如何準確、可靠地傳遞消息的問題。
針對上述技術問題,本申請發(fā)明人提供一種解決方案,其核心原理是:在基于apns推送消息的基礎上,在互聯網應用的客戶端(app,英文全稱為aplication)內嵌網絡請求服務,基于客戶端的運行狀態(tài)以不同方式激活客戶端內部的網絡請求服務,以便同時采用apns推送消息和客戶端內部的網絡請求服務與服務端進行消息傳遞,避免單獨依靠apns推送消息導致消息漏報的情況,提高消息傳遞的可靠性。
基于上述,本申請一實施例提供一種消息獲取方法,包括:
根據客戶端的當前狀態(tài),啟用至少一種激活機制;
在所述客戶端處于當前狀態(tài)期間,根據所述至少一種激活機制,分別激活所述客戶端內的網絡請求服務;以及
根據所述被激活的網絡請求服務和推送服務,從服務端獲取消息。
在一可選實施方式中,所述根據客戶端的當前狀態(tài),啟用至少一種激活機制,包括:在所述客戶端當前處于非運行狀態(tài)時,啟用至少一種系統服務級的激活機制。
在一可選實施方式中,在所述客戶端當前處于非運行狀態(tài)時,啟用至少一種系統服務級的激活機制,包括以下至少一種:
在所述客戶端當前處于非運行狀態(tài)時,啟用操作系統提供的后臺獲取機制;
在所述客戶端當前處于非運行狀態(tài)時,啟用操作系統提供的靜默推送機制。
在一可選實施方式中,在所述客戶端處于當前狀態(tài)期間,根據所述至少一種激活機制,分別激活所述客戶端內的網絡請求服務,包括以下至少一種:
在所述客戶端處于非運行狀態(tài)期間,調用所述操作系統提供的后臺獲取api,以確定激活時間點,并在所述激活時間點激活所述網絡請求服務;
在所述客戶端處于非運行狀態(tài)期間,接收所述服務端基于所述靜默推送機制通過所述推送服務所推送的靜默消息,并在接收到所述靜默消息時,激活所述網絡請求服務。
在一可選實施方式中,在所述客戶端處于當前狀態(tài)期間,根據所述至少一種激活機制,分別激活所述客戶端內的網絡請求服務,包括:
在所述客戶端處于非運行狀態(tài)期間,根據所述至少一種激活機制,將所述客戶端從非運行狀態(tài)變更為運行狀態(tài),在所述客戶端處于運行狀態(tài)時,激活所述網絡請求服務。
在一可選實施方式中,根據客戶端的當前狀態(tài),啟用至少一種激活機制之前,所述方法還包括:監(jiān)聽所述客戶端的狀態(tài);若監(jiān)聽到所述客戶端處于掛起狀態(tài),確定所述客戶端當前處于非運行狀態(tài)。
在一可選實施方式中,所述方法還包括:在所述客戶端進入后臺狀態(tài)時,調用操作系統提供的后臺任務api,以使所述客戶端在指定時間后進入掛起狀態(tài)。
在一可選實施方式中,所述根據客戶端的當前狀態(tài),啟用至少一種激活機制,包括:在所述客戶端當前處于運行狀態(tài)時,啟用至少一種應用級的激活機制。
在一可選實施方式中,在所述客戶端當前處于運行狀態(tài)時,啟用至少一種應用級的激活機制,包括:在所述客戶端當前處于運行狀態(tài)時,啟用所述客戶端內的定時輪詢機制。
在一可選實施方式中,在所述客戶端處于當前狀態(tài)期間,根據所述至少一種激活機制,分別激活所述客戶端內的網絡請求服務,包括:在所述客戶端處于運行狀態(tài)期間,根據所述定時輪詢機制,定時激活所述網絡請求服務。
在一可選實施方式中,根據客戶端的當前狀態(tài),啟用至少一種激活機制之前,所述方法還包括:監(jiān)聽所述客戶端的狀態(tài);若監(jiān)聽到所述客戶端處于非活動狀態(tài)、活動狀態(tài)或后臺狀態(tài),確定所述客戶端當前處于運行狀態(tài)。
在一可選實施方式中,所述根據所述被激活的網絡請求服務和推送服務,從服務端獲取消息,包括:通過推送通道,接收所述服務端通過所述推送服務推送的第一消息;通過網絡請求通道,接收服務端根據所述被激活的網絡請求服務發(fā)送的網絡請求而返回的第二消息;通過與所述客戶端的當前狀態(tài)相適應的展示方式,提示所述第一消息和/或第二消息的到達。
相應地,本申請另一實施例提供一種消息獲取裝置,包括:
啟用單元,用于根據客戶端的當前狀態(tài),啟用至少一種激活機制;
激活單元,用于在所述客戶端處于當前狀態(tài)期間,根據所述至少一種激活機制,分別激活所述客戶端內的網絡請求服務;以及
獲取單元,用于根據所述被激活的網絡請求服務和推送服務,從服務端獲取消息。
在一種可選實施方式中,所述啟用單元具體用于:在所述客戶端處于非運行狀態(tài)時,啟用至少一種系統服務級的激活機制。
在一種可選實施方式中,所述啟用單元具體用于執(zhí)行以下至少一種操作:
在所述客戶端當前處于非運行狀態(tài)時,啟用操作系統提供的后臺獲取機制;
在所述客戶端當前處于非運行狀態(tài)時,啟用操作系統提供的靜默推送機制。
在一種可選實施方式中,所述激活單元具體用于執(zhí)行以下至少一種操作:
在所述客戶端處于非運行狀態(tài)期間,調用所述操作系統提供的后臺獲取api,以確定激活時間點,并在所述激活時間點激活所述網絡請求服務;
在所述客戶端處于非運行狀態(tài)期間,接收所述服務端基于所述靜默推送機制通過所述推送服務所推送的靜默消息,并在接收到所述靜默消息時,激活所述網絡請求服務。
在一可選實施方式中,所述激活單元具體用于:在所述客戶端處于非運行狀態(tài)期間,根據所述至少一種激活機制,將所述客戶端從非運行狀態(tài)變更為運行狀態(tài),在所述客戶端處于運行狀態(tài)時,激活所述網絡請求服務。
在一種可選實施方式中,所述裝置還包括:第一監(jiān)聽單元,用于監(jiān)聽所述客戶端的狀態(tài);第一確定單元,用于在所述第一監(jiān)聽單元監(jiān)聽到所述客戶端處于掛起狀態(tài)時,確定所述客戶端當前處于非運行狀態(tài)。
在一種可選實施方式中,所述裝置還包括:調用單元,用于在所述客戶端進入后臺狀態(tài)時,調用操作系統提供的后臺任務api,以使所述客戶端在指定時間后進入掛起狀態(tài)。
在一種可選實施方式中,所述啟用單元具體用于:在所述客戶端當前處于運行狀態(tài)時,啟用至少一種應用級的激活機制。
在一種可選實施方式中,所述啟用單元具體用于:在所述客戶端當前處于運行狀態(tài)時,啟用所述客戶端內的定時輪詢機制。
在一種可選實施方式中,所述激活單元具體用于:在所述客戶端處于運行狀態(tài)期間,根據所述定時輪詢機制,定時激活所述網絡請求服務。
在一種可選實施方式中,所述裝置還包括:第二監(jiān)聽單元,用于監(jiān)聽所述客戶端的狀態(tài);第二確定單元,用于在所述第二監(jiān)聽單元監(jiān)聽到所述客戶端處于非活動狀態(tài)、活動狀態(tài)或后臺狀態(tài)時,確定所述客戶端當前處于運行狀態(tài)。
在一種可選實施方式中,所述獲取單元具體用于:通過推送通道,接收所述服務端通過所述推送服務推送的第一消息;通過網絡請求通道,接收服務端根據所述被激活的網絡請求服務發(fā)送的網絡請求而返回的第二消息;通過與所述客戶端的當前狀態(tài)相適應的展示方式,提示所述第一消息和/或第二消息的到達。
本申請實施例還提供一種終端設備,包括:存儲器、處理器以及一互聯網應用的客戶端;所述存儲器用于存儲一條或多條計算機指令,其中,所述一條或多條計算機指令供所述處理器調用執(zhí)行;
所述處理器用于:根據所述客戶端的當前狀態(tài),啟用至少一種激活機制;在所述客戶端處于當前狀態(tài)期間,根據所述至少一種激活機制,分別激活所述客戶端內的網絡請求服務;以及根據所述被激活的網絡請求服務和推送服務,從服務端獲取消息。
在一個可能的設計中,消息獲取裝置的結構中包括處理器和存儲器,所述存儲器用于存儲支持消息獲取裝置執(zhí)行上述實施例提供的消息獲取方法的程序,所述處理器被配置為用于執(zhí)行所述存儲器中存儲的程序。所述消息獲取裝置還可以包括通信接口,用于所述消息獲取裝置與其他設備或通信網絡通信。
本申請實施例提供了一種計算機存儲介質,用于儲存消息獲取裝置所用的計算機軟件指令,其包含用于執(zhí)行上述實施例提供的消息獲取方法為所述消息獲取裝置所涉及的程序。
在本申請實施例中,在推送服務的基礎上,在客戶端內嵌網絡請求服務,基于客戶端的運行狀態(tài)以不同方式激活客戶端內部的網絡請求服務,以便同時采用推送服務和客戶端內部的網絡請求服務與服務端進行消息傳遞,避免單獨依靠推送服務推送消息導致消息漏報的情況,提高消息傳遞的可靠性。
附圖說明
此處所說明的附圖用來提供對本申請的進一步理解,構成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構成對本申請的不當限定。在附圖中:
圖1為現有技術中基于apns推送服務的消息推送過程的示意圖;
圖2為本申請一實施例提供的消息獲取方法的流程示意圖;
圖3為本申請另一實施例提供的消息獲取方法的流程示意圖;
圖4為本申請又一實施例提供的消息通知架構的示意圖;
圖5為本申請又一實施例提供的消息獲取裝置的結構示意圖;
圖6為本申請又一實施例提供的消息獲取裝置的結構示意圖。
具體實施方式
為使本申請的目的、技術方案和優(yōu)點更加清楚,下面將結合本申請具體實施例及相應的附圖對本申請技術方案進行清楚、完整地描述。顯然,所描述的實施例僅是本申請一部分實施例,而不是全部的實施例。基于本申請中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
圖2為本申請一實施例提供的消息獲取方法的流程示意圖。如圖2所示,所述方法包括:
201、根據客戶端的當前狀態(tài),啟用至少一種激活機制。
202、在客戶端處于當前狀態(tài)期間,根據至少一種激活機制,分別激活客戶端內的網絡請求服務。
203、根據被激活的網絡請求服務和推送服務,從服務端獲取消息。
在本實施例中,客戶端內嵌網絡請求服務。當網絡請求服務被激活時,可直接與客戶端對應的服務端建立網絡連接,并通過所述網絡連接與服務端進行交互。所述服務端位于網絡側或云端,是為客戶端服務的,例如向客戶端提供資源,保存客戶端的數據。所述資源主要包括客戶端所需的消息和/或數據。網絡請求服務與服務端之間的交互過程主要包括:網絡請求服務向服務端發(fā)送網絡請求;服務端接收網絡服務請求發(fā)送的網絡請求,并根據所述網絡請求向網絡請求服務返回相應信息的過程。
在本實施例中,結合客戶端的狀態(tài),提供不同的激活機制,用以在客戶端處于不同狀態(tài)時激活所述網絡請求服務。在客戶端的每種狀態(tài)下,提供有至少一種激活機制,并且至少一種激活機制之間相互獨立,即所述至少一種激活機制可以各自獨立地激活網絡請求服務。當然,不同客戶端狀態(tài)對應的激活機制之間也相互獨立。
當有多個激活機制同時激活網絡請求服務時,客戶端與服務端之間可以進行多次網絡交互??蛇x地,可以在客戶端與服務端之間建立一條網絡連接,多次網絡交互基于相同網絡連接完成;或者,也可以在客戶端與服務端之間建立多條不同的網絡連接,多次網絡交互基于不同的網絡連接完成。
基于上述分析,當客戶端需要從服務端獲取消息時,一方面可以啟用推送服務,由服務端通過推送服務推送消息;另一方面可以根據客戶端的當前狀態(tài),啟用與客戶端當前狀態(tài)相匹配的至少一種激活機制,在客戶端處于當前狀態(tài)期間,采用被啟用的至少一種激活機制分別激活客戶端內的網絡請求服務,從而同時結合被激活的網絡請求服務和推送服務,從服務端獲取消息。由此可見,本實施例可以采用多種方式從服務端獲取消息,與單純依賴推送服務相比,有利于降低出現消息遺漏的概率,進而提高消息獲取的可靠性。
其中,根據應用場景的不同,客戶端可以從服務端獲取的消息也會有所不同。以外賣系統為例,客戶端可以從服務端獲取的消息可以是訂單通知消息、訂單取消消息、系統通知消息等任意消息。
其中,根據應用場景的不同,上述推送服務也會有所不同??蛇x地,上述推送服務可以是現有的推送服務,也可以是在本案之后出現的新的推送服務。另外,根據應用場景的不同,上述推送服務可以是第三方推送服務,也可以是系統自身的推送服務。例如,對基于ios平臺開發(fā)的應用來說,上述推送服務可以是基于apns服務器的推送服務,屬于現有的第三方推送服務。又例如,對基于android平臺開發(fā)的應用來說,上述推送服務可以是互聯網應用的服務端直接面向互聯網應用的客戶端提供的推送服務。
在上述實施例或下述實施例中,需要基于客戶端的狀態(tài),啟用相應的激活機制,以激活客戶端內的網絡請求服務??蛇x地,可以將客戶端的狀態(tài)劃分為運行狀態(tài)和非運行狀態(tài),但不限于此。這里的運行狀態(tài)主要是指客戶端的程序代碼被加載到內存中并且具有執(zhí)行能力(例如可以響應用戶操作和/或系統操作)的狀態(tài)。當客戶端處于以下任一情況時都屬于這里的運行狀態(tài):客戶端位于前臺但未接收事件處理,客戶端位于前臺并且接收到事件處理,以及客戶端位于后臺并且可以響應系統操作(主要是指可以接收操作系統發(fā)出的消息或指令)。這里的“前臺”主要是指承載客戶端的終端的屏幕上呈現有客戶端的界面,可響應用戶操作。這里的“后臺”主要是指承載客戶端的終端的屏幕上未呈現客戶端的界面,無法響應用戶操作。相應地,非運行狀態(tài)是指客戶端自身不具有執(zhí)行能力,一般來說除用戶或操作系統發(fā)起的可引起客戶端狀態(tài)變更的操作之外,不可響應其它操作的狀態(tài)。
對于客戶端處于運行狀態(tài)的情況,客戶端自身具有執(zhí)行能力,因此可以啟用至少一種應用級的激活機制。所述應用級的激活機制是指客戶端內的激活機制,這些激活機制可被客戶端執(zhí)行。在客戶端處于運行狀態(tài)時,通過啟用應用級的激活機制,使得客戶端可以自己激活內部的網絡請求服務,從而在客戶端處于運行狀態(tài)的情況下保證消息獲取的可靠性。
對于客戶端處于非運行狀態(tài)的情況,客戶端自身已經不具有執(zhí)行能力,故可以啟用至少一種系統服務級的激活機制。所述系統服務級的激活機制是指操作系統提供的激活機制,這些激活機制可用于改變客戶端的狀態(tài)但不屬于客戶端內的激活機制。在客戶端處于非運行狀態(tài)時,通過系統服務級的激活機制可以激活客戶端內的網絡請求服務,從而在客戶端處于非運行狀態(tài)的情況下保證消息獲取的可靠性。
基于上述分析,本申請另一實施例提供的消息獲取方法的流程,如圖3所示,包括以下步驟:
301、監(jiān)聽客戶端的狀態(tài)。
302、判斷客戶端當前是否處于非運行狀態(tài);若判斷結果為是,即客戶端處于非運行狀態(tài),則執(zhí)行步驟303;若判斷結果為否,即客戶端處于運行狀態(tài),則執(zhí)行步驟305。
303、啟用至少一種系統服務級的激活機制,繼續(xù)執(zhí)行步驟304。
304、根據至少一種系統服務級的激活機制,分別激活客戶端內的網絡請求服務,并繼續(xù)執(zhí)行步驟307。
305、啟用至少一種應用級的激活機制,繼續(xù)執(zhí)行步驟306。
306、根據至少一種應用級的激活機制,分別激活客戶端內的網絡請求服務,并繼續(xù)執(zhí)行步驟307。
307、根據被激活的網絡請求服務和推送服務,從服務端獲取消息。
在本實施例中,通過監(jiān)聽客戶端的狀態(tài),識別客戶端是處于本申請實施例所定義的運行狀態(tài)還是非運行狀態(tài),以便啟用相應的激活機制激活客戶端內的網絡請求服務,從而保證無論客戶端是處于運行狀態(tài)還是處于非運行狀態(tài),都能夠可靠地從服務端獲得消息。
在上述實施例或下述實施例中,需要根據被啟用的激活機制,激活客戶端內的網絡請求服務??蛇x地,若客戶端處于非運行狀態(tài),則激活客戶端內的網絡請求服務包括:根據所述被啟用的激活機制,首先將客戶端從非運行狀態(tài)變更至運行狀態(tài),在客戶端處于運行狀態(tài)下激活所述網絡請求服務。
在上述實施例或下述實施例中,可選地,客戶端的程序代碼可基于ios平臺開發(fā)?;趇os平臺開發(fā)的app包括以下狀態(tài):未運行(notrunning)狀態(tài)、非活動(inactive)狀態(tài)、活動(active)狀態(tài)、后臺(background)狀態(tài)以及掛起(suspended)狀態(tài)。其中,notrunning狀態(tài)是指客戶端未啟動,其程序代碼尚未被加載至內存中的狀態(tài),一般來說除用戶或操作系統發(fā)起的可引起客戶端狀態(tài)變更的操作之外,不可響應其它操作。inactive狀態(tài)是指客戶端正在前臺運行,此時有界面呈現,但是未接收到事件處理的狀態(tài)。active狀態(tài)是指客戶端正在前臺運行,此時有界面呈現,并且接收到事件處理的狀態(tài)。background狀態(tài)是指客戶端處在后臺,此時沒有界面呈現,但還可以響應系統操作的狀態(tài),這是客戶端在進入suspended狀態(tài)之前短暫停留的狀態(tài)。suspended狀態(tài)是客戶端處在后臺,此時沒有界面呈現,并且自身不具有執(zhí)行能力,一般來說除用戶或操作系統發(fā)起的可引起客戶端狀態(tài)變更的操作之外,不可響應其它操作的狀態(tài)。
基于上述,在監(jiān)聽客戶端的狀態(tài)的過程中,若監(jiān)聽到客戶端處于notrunning或suspended狀態(tài),則可以確定客戶端處于本申請實施例所定義的非運行狀態(tài);相應地,當監(jiān)聽到客戶端處于inactive狀態(tài)、active狀態(tài)或者background狀態(tài)時,可以確定客戶端處于本申請實施例所定義的運行狀態(tài)。
進一步可選地,考慮到background狀態(tài)是客戶端進入suspended狀態(tài)之前短暫停留的狀態(tài),background狀態(tài)的持續(xù)時間比較短,不利于監(jiān)聽操作,因此可以適當延長客戶端處于background狀態(tài)的時間。為了延長客戶端處于background狀態(tài)的時間,在客戶端進入background狀態(tài)時,可以調用操作系統(即ios)提供的后臺任務(backgroundtask)應用程序接口(applicationprogramminginterface,api),以使客戶端在指定時間后進入suspended狀態(tài)。簡單來說,ios提供了后臺任務api,通過調用后臺任務api可以使客戶端在background狀態(tài)保持指定時間,例如3分鐘,然后再進入suspended狀態(tài)。
在一可選實施方式中,系統服務級的激活機制可以包括操作系統提供的后臺獲取(backgroundfetch)機制和/或操作系統提供的靜默推送(silentremotenotifications)機制,但不限于此。其中,backgroundfetch機制是指使用操作系統提供的backgroundfetchapi的機制,backgroundfetchapi會根據客戶端的一些使用情況確定激活時間點,進而可以在backgroundfetchapi確定的激活時間點激活網絡請求服務。silentremotenotifications機制是指觸發(fā)服務端周期性地通過apns推送服務向客戶端推送靜默消息的機制,所述靜默消息用于激活客戶端內的網絡請求服務。
基于上述,一種啟用系統服務級的激活機制的實施方式可以包括:
在客戶端處于非運行狀態(tài)期間,啟用操作系統提供的后臺獲取機制;和/或
在客戶端處于非運行狀態(tài)期間,啟用操作系統提供的靜默推送機制。
相應地,若在客戶端處于非運行狀態(tài)期間,啟用操作系統提供的后臺獲取機制,則可以根據后臺獲取機制,激活客戶端內的網絡請求服務。激活操作的實施方式包括:在客戶端處于非運行狀態(tài)期間,調用操作系統提供的backgroundfetchapi,以確定激活時間點,并在所述激活時間點先將客戶端從非運行狀態(tài)變更為運行狀態(tài),再激活客戶端內的網絡請求服務。
相應地,若在客戶端處于非運行狀態(tài)期間,啟用操作系統提供的靜默推送機制,則可以根據靜默推送機制,激活客戶端內的網絡請求服務。激活操作的實施方式包括:服務端通過apns推送服務定時向客戶端推送靜默消息,因此在客戶端處于非運行狀態(tài)期間,可以接收服務端基于靜默推送機制通過apns推送服務推送的靜默消息,并在接收到靜默消息時,先將客戶端從非運行狀態(tài)變更為運行狀態(tài),再激活客戶端內的網絡請求服務。
相應地,若在客戶端處于非運行狀態(tài)期間,同時啟用操作系統提供的后臺獲取機制和靜默推送機制,則可以根據后臺獲取機制和/或靜默推送機制,激活客戶端內的網絡請求服務。激活操作的實施例方式包括:在客戶端處于非運行狀態(tài)期間,一方面調用操作系統提供的后臺獲取api,可以根據客戶端的一些使用情況確定激活時間點,并在所述激活時間點激活客戶端內的網絡請求服務;另一方面,接收服務端基于靜默推送機制通過apns推送服務所推送的靜默消息,并在接收到靜默消息時,激活客戶端內的網絡請求服務。在此需要說明,在多種(兩種或兩種以上)激活機制結合使用時,若多種激活機制激活所述網絡請求服務的時間點不同,則只需由激活時間較早的激活機制,將客戶端從非運行狀態(tài)變更到運行狀態(tài),然后激活網絡請求服務。其中,當客戶端被從非運行狀態(tài)變更至運行狀態(tài)時,會觸發(fā)啟用應用級的觸發(fā)機制而進入另一分支。若多種激活機制激活所述網絡請求服務的時間點相同,則可以由任意一種或多種激活機制,將客戶端從非運行狀態(tài)變更到運行狀態(tài),然后激活網絡請求服務。優(yōu)選地,在實際操作上,可以只執(zhí)行一次客戶端狀態(tài)的變更操作和網絡請求服務的激活操作。
在一可選實施方式中,應用級的激活機制包括客戶端內的定時輪詢機制。定時輪詢機制是指按照設定的定時間隔,定時激活網絡請求服務的機制。
基于上述,一種啟用應用級的激活機制的實施方式可以包括:在客戶端當前處于運行狀態(tài)時,啟用客戶端內的定時輪詢機制。相應地,若在客戶端當前處于運行狀態(tài)時,啟用客戶端內的定時輪詢機制,則可以根據定時輪詢機制,激活客戶端內的網絡請求服務。激活操作的實施方式包括:在客戶端處于運行狀態(tài)期間,根據定時輪詢機制,定時激活網絡請求服務。其中,定時間隔可根據應用場景適應性設置,本實施例對此不作限定。
在上述實施例或下述實施例中,在激活網絡請求服務之后,需要根據被激活的網絡請求服務以及推送服務,從服務端獲取消息。一種根據被激活的網絡請求服務以及推送服務,從服務端獲取消息的可選實施方式包括:一方面,通過推送通道,接收服務端通過推送服務推送的第一消息;另一方面,通過網絡請求通道,接收服務端根據被激活的網絡請求服務發(fā)送的網絡請求而返回的第二消息;然后,通過與客戶端的當前狀態(tài)相適應的展示方式,提示第一消息和/或第二消息的到達。提示方式包括但不限于:展示第一消息和/或第二消息以進行提示,和/或,通過提示音進行提示。
其中,通過推送通道接收第一消息的操作,與通過網絡請求通道接收第二消息的操作之間沒有先后順序的限定,具體視觸發(fā)時機而定。這兩種操作可以并行執(zhí)行,也可以其中任一種操作先執(zhí)行,另一種操作后執(zhí)行。
理論上來說,在不存在消息漏報的情況下,服務端通過推送服務推送的第一消息與通過被激活的網絡請求服務請求到的第二消息應該相同,則在展示時可以展示第一消息和第二消息中的任一消息。但實際應用過程中,服務端通過推送服務推送消息時可能存在消息漏報的情況,相應地,通過網絡請求服務從服務端請求消息時也可能存在消息漏報的情況,在這些情況下,第一消息和第二消息不完全相同,則可以同時展示第一消息和第二消息,或者展示第一消息和第二消息兩者的并集等。在本實施方式中,將兩種方式結合,可以相互彌補彼此漏報的消息,從而提高了消息從服務端到達客戶端的可靠性。
在展示第一消息和/或第二消息時,可結合客戶端的當前狀態(tài),采用合適的方式。當客戶端處于運行狀態(tài),并且位于前臺時,會呈現一界面,則可以在所述界面展示第一消息和/或第二消息,以提示用戶有消息到達。當客戶端處于運行狀態(tài),并且位于后臺時,或者當客戶端處于非運行狀態(tài),并且位于后臺時,沒有界面呈現,則可以調用操作系統提供的本地通知localnotification提示用戶有消息到達。其中,基于localnotification提示用戶有消息到達的方式包括:通過彈窗展示第一消息和/或第二消息,以提示用戶有消息到達,或者,通過聲音提示用戶有消息到來,或者也可以結合彈窗和聲音提示用戶有消息到來。
在一外賣應用場景中,外賣系統包括服務端、商戶客戶端和用戶客戶端。隨著ios終端設備的廣泛應用,針對ios終端設備開發(fā)ios版本的商戶客戶端和用戶客戶端,商戶客戶端和用戶客戶端可安裝于各種ios終端設備上;同時,對服務端的功能做適應性擴展,使得服務端可以支持ios版的商戶客戶端和用戶客戶端。所述ios終端設備可以是手機、筆記本電腦或平板電腦等。
在實際應用過程中,用戶通過用戶客戶端進行下單。當用戶點擊訂單頁面上的提交按鈕提交訂單時,用戶客戶端向服務端發(fā)送一條訂單消息。為了便于商戶及時了解訂單狀況以及是否有新訂單到達,服務端在收到用戶客戶端發(fā)送的訂單消息時,可以向商戶客戶端發(fā)送一條訂單通知消息,以通知商戶有新訂單。為了保證商戶客戶端能夠可靠、及時地收到訂單通知消息,則商戶客戶端獲取訂單通知消息的過程可以采用本申請上述實施例提供的方法實現。除此之外,在用戶客戶端獲取服務端推送的與商品或商家有關的消息時,也可以采用上述實施例提供的方法實現。又例如,在服務端獲取用戶客戶端或商戶客戶端的狀態(tài)等信息時,也可以采用上述實施例提供的方法實現。在下面實施例中,以本申請上述實施例提供的方法在商戶客戶端獲取訂單通知消息過程中的應用為例進行說明,但并不限于此。
在本實施例中,為了保證訂單通知消息安全可靠地到達商戶一端,采用圖4所示的消息通知架構?;趫D4所示的消息通知架構,商戶客戶端獲取訂單通知消息的過程包括以下幾方面的操作:
第一種操作流程如圖4中標①的連接線所示,該操作流程不受商戶客戶端的狀態(tài)的限制,即在商戶客戶端處于任何狀態(tài)時都可實施。具體地,服務端每當接收到用戶客戶端提交的訂單消息時,通過現有的推送服務,即apns推送服務向商戶客戶端推送訂單通知消息。其詳細流程為:用戶客戶端向服務端提交訂單消息;服務端接收用戶客戶端提交的訂單消息;服務端生成訂單通知消息,將訂單通知消息發(fā)送至apns服務端,apns服務端將訂單通知消息發(fā)送至承載商戶客戶端的終端設備;終端設備將訂單通知消息通知給商戶客戶端。其中,通知方式與商戶客戶端的狀態(tài)有關。若此時商戶客戶端處于運行狀態(tài),并且位于前臺,即處于inactive狀態(tài)或active狀態(tài),商戶客戶端在終端設備上呈現有一界面,則可以通過所述界面將訂單通知消息展示出來,即圖4中標①的實線所示;若此時商戶客戶端處于運行狀態(tài),并且位于后臺,即處于background狀態(tài),或者商戶客戶端處于非運行狀態(tài),并且位于后臺,即處于suspended狀態(tài),商戶客戶端在終端設備上未呈現有界面,則可以調用ios提供的localnotification,通過彈窗和/或聲音的方式提示商戶有訂單通知消息到達,即圖4中標①的虛線所示。
第二種操作流程如圖4中標②的連接線所示,該操作流程與商戶客戶端的狀態(tài)有關。具體地,在商戶客戶端處于inactive狀態(tài)、active狀態(tài)或background狀態(tài)時,商戶客戶端內開啟一個定時輪詢機制,例如可以是30s輪詢一次,按照輪詢間隔定時激活網絡請求服務。即,按照輪詢間隔定時向服務端發(fā)送網絡請求,以向服務端請求訂單通知消息;服務端接收到商戶客戶端發(fā)送的網絡請求之后,在有訂單通知消息的情況下,向商戶客戶端返回訂單通知消息。其中,通知方式與商戶客戶端的狀態(tài)有關。若此時商戶客戶端處于運行狀態(tài),并且位于前臺,即處于inactive狀態(tài)或active狀態(tài),則商戶客戶端在終端設備上呈現有一界面,則可以通過所述界面將訂單通知消息展示出來,即圖4中標②的實線所示;若此時商戶客戶端處于運行狀態(tài),并且位于后臺,即處于background狀態(tài),商戶客戶端在終端設備上未呈現有界面,則可以調用ios提供的localnotification,通過彈窗和/或聲音的方式提示商戶有訂單通知消息到達,即圖4中標②的虛線所示。
可選地,為了延長客戶端處于background狀態(tài)的時間,如圖4中標③的連接線所示:商戶客戶端在進入background狀態(tài)時,可以調用ios提供的backgroundtask。其中,使用backgroundtask,可以使商戶客戶端在一定時間,例如3分鐘內一直處于background狀態(tài)。這樣,在這3分鐘內,可結合上述30秒的定時輪詢機制,每30秒主動向服務端請求一次訂單通知消息,進而獲得最新的訂單狀態(tài)。
第三種操作流程如圖4中標④的連接線所示,該操作流程與商戶客戶端的狀態(tài)有關。具體地,在商戶客戶端處于suspended狀態(tài)時,調用ios提供的backgroundfetchapi,backgroundfetch根據商戶客戶端的使用情況確定激活時間點,然后在所述激活時間點先將客戶端從非運行狀態(tài)變更為運行狀態(tài),例如background狀態(tài),再激活網絡請求服務。即,向服務端發(fā)送網絡請求,以向服務端請求訂單通知消息;服務端接收到商戶客戶端發(fā)送的網絡請求之后,在有訂單通知消息的情況下,向商戶客戶端返回訂單通知消息。此時,商戶客戶端已經處于運行狀態(tài),并且位于后臺,即處于background狀態(tài),商戶客戶端在終端設備上未呈現有界面,則可以調用ios提供的localnotification,通過彈窗和/或聲音的方式提示商戶有訂單通知消息到達,即圖4中標④的虛線所示。
第四種操作流程如圖4中標⑤的連接線所示,該操作流程與商戶客戶端的狀態(tài)有關。具體地,在商戶客戶端處于suspended狀態(tài)時,采用ios提供的silentremotenotifications機制,基于silentremotenotifications機制,服務端定時通過apns服務端向商戶客戶端推送靜默消息,該靜默消息是服務端定時推送的而不依賴于訂單通知消息;當接收到apns服務端發(fā)送的靜默消息時,先將客戶端從非運行狀態(tài)變更為運行狀態(tài),例如background狀態(tài),再激活網絡請求服務。即,向服務端發(fā)送網絡請求,以向服務端請求訂單通知消息;服務端接收到商戶客戶端發(fā)送的網絡請求之后,在有訂單通知消息的情況下,向商戶客戶端返回訂單通知消息。此時,商戶客戶端已經處于運行狀態(tài),并且位于后臺,即處于background狀態(tài),商戶客戶端在終端設備上未呈現有界面,則可以調用ios提供的localnotification,通過彈窗和/或聲音的方式提示商戶有訂單通知消息到達,即圖4中標⑤的虛線所示。
值得說明的是,在商戶客戶端處于本申請實施例所定義的運行狀態(tài)時,可按照各自的執(zhí)行邏輯一并執(zhí)行上述第一種操作和第二種操作;在商戶客戶端處于本申請實施例所定義的非運行狀態(tài)時,可按照各自的執(zhí)行邏輯一并執(zhí)行上述第一種操作、第三種操作和第四種操作。
由此可見,在本實施例中,結合現有apns推送服務,在商戶客戶端內部開啟一個定時輪詢機制,以輪詢方式定時從服務端拉取最新的訂單通知消息,使得在商戶客戶端處于運行狀態(tài)的情況下能夠可靠、及時地獲取訂單通知消息,及時了解最新的訂單狀態(tài)。同時,使用ios平臺提供的多種后臺運行機制,保證商戶客戶端處于非運行狀態(tài)的情況下也能夠可靠、及時地獲取最新的訂單通知消息,及時了解最新的訂單狀態(tài)。
需要說明的是,上述實施例所提供方法的各步驟的執(zhí)行主體均可以是同一設備,或者,該方法也由不同設備作為執(zhí)行主體。比如,步驟201至步驟203的執(zhí)行主體可以為設備a;又比如,步驟201和202的執(zhí)行主體可以為設備a,步驟203的執(zhí)行主體可以為設備b;等等。
圖5為本申請又一實施例提供的消息獲取裝置的結構示意圖。如圖5所示,裝置包括:啟用單元51、激活單元52和獲取單元53。
啟用單元51,用于根據客戶端的當前狀態(tài),啟用至少一種激活機制。
激活單元52,用于在客戶端處于當前狀態(tài)期間,根據啟用單元51啟用的至少一種激活機制,分別激活客戶端內的網絡請求服務。
獲取單元53,用于根據被激活單元52激活的網絡請求服務和推送服務,從服務端獲取消息。
在一可選實施方式中,啟用單元51具體用于:在客戶端處于非運行狀態(tài)時,啟用至少一種系統服務級的激活機制。
進一步,啟用單元51具體用于執(zhí)行以下至少一種操作:
在客戶端當前處于非運行狀態(tài)時,啟用操作系統提供的后臺獲取機制;
在客戶端當前處于非運行狀態(tài)時,啟用操作系統提供的靜默推送機制。
相應地,激活單元52具體用于執(zhí)行以下至少一種操作:
在客戶端處于非運行狀態(tài)期間,調用操作系統提供的后臺獲取api,以確定激活時間點,并在激活時間點激活網絡請求服務;
在客戶端處于非運行狀態(tài)期間,接收服務端基于靜默推送機制通過推送服務所推送的靜默消息,并在接收到靜默消息時,激活網絡請求服務。
在一可選實施方式中,激活單元52具體用于:在客戶端處于非運行狀態(tài)期間,根據至少一種激活機制,將客戶端從非運行狀態(tài)變更為運行狀態(tài),在客戶端處于運行狀態(tài)時,激活網絡請求服務。
在一可選實施方式中,如圖6所示,裝置還包括:第一監(jiān)聽單元61和第一確定單元62。
第一監(jiān)聽單元61,用于監(jiān)聽客戶端的狀態(tài)。
第一確定單元62,用于在第一監(jiān)聽單元61監(jiān)聽到客戶端處于掛起狀態(tài)時,確定客戶端當前處于非運行狀態(tài),以向啟用單元51提供客戶端當前所處的狀態(tài)信息。
在一可選實施方式中,如圖6所示,裝置還可以包括:調用單元63。
調用單元63,用于在客戶端進入后臺狀態(tài)時,調用操作系統提供的后臺任務api,以使客戶端在指定時間后進入掛起狀態(tài)。
在一可選實施方式中,啟用單元51具體用于:在客戶端當前處于運行狀態(tài)時,啟用至少一種應用級的激活機制。
進一步,啟用單元51具體用于:在客戶端當前處于運行狀態(tài)時,啟用客戶端內的定時輪詢機制。
相應地,激活單元52具體用于:在客戶端處于運行狀態(tài)期間,根據定時輪詢機制,定時激活網絡請求服務。
在一可選實施方式中,如圖6所示,裝置還包括:第二監(jiān)聽單元64和第二確定單元65。
第二監(jiān)聽單元64,用于監(jiān)聽客戶端的狀態(tài);
第二確定單元65,用于在第二監(jiān)聽單元64監(jiān)聽到客戶端處于非活動狀態(tài)、活動狀態(tài)或后臺狀態(tài)時,確定客戶端當前處于運行狀態(tài),以向啟用單元51提供客戶端當前所處的狀態(tài)信息。
在一可選實施方式中,獲取單元53具體用于:通過推送通道,接收服務端通過推送服務推送的第一消息;通過網絡請求通道,接收服務端根據被激活的網絡請求服務發(fā)送的網絡請求而返回的第二消息;通過與客戶端的當前狀態(tài)相適應的展示方式,展示第一消息和/或第二消息。
值得說明的是,第一監(jiān)聽單元61和第二監(jiān)聽單元64可以是同一單元,也可以是兩個獨立的單元。相應地,第一確定單元62和第二確定單元65可以是同一單元,也可以是兩個獨立的單元。
本實施例提供的消息獲取裝置可作為客戶端內部的一功能模塊,位于客戶端內部實現;或者,也可以獨立于客戶端,例如作為客戶端的一插件模塊實現。
本實施例提供的消息獲取裝置可用于執(zhí)行上述方法實施例的流程,其具體工作原理以及流程不再贅述,詳見方法實施例的描述。
本實施例提供的消息獲取裝置,可以在推送服務的基礎上,基于客戶端內嵌的網絡請求服務,結合客戶端的運行狀態(tài)以不同方式激活客戶端內部的網絡請求服務,以便同時采用推送服務和客戶端內部的網絡請求服務與服務端進行消息傳遞,避免單獨依靠推送服務推送消息導致消息漏報的情況,提高消息傳遞的可靠性。
本領域內的技術人員應明白,本發(fā)明的實施例可提供為方法、系統、或計算機程序產品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、cd-rom、光學存儲器等)上實施的計算機程序產品的形式。
本發(fā)明是參照根據本發(fā)明實施例的方法、設備(系統)、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執(zhí)行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
在一個典型的配置中,計算設備包括一個或多個處理器(cpu)、輸入/輸出接口、網絡接口和內存。
內存可能包括計算機可讀介質中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內存等形式,如只讀存儲器(rom)或閃存(flashram)。內存是計算機可讀介質的示例。
計算機可讀介質包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現信息存儲。信息可以是計算機可讀指令、數據結構、程序的模塊或其他數據。計算機的存儲介質的例子包括,但不限于相變內存(pram)、靜態(tài)隨機存取存儲器(sram)、動態(tài)隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內存技術、只讀光盤只讀存儲器(cd-rom)、數字多功能光盤(dvd)或其他光學存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質,可用于存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質不包括暫存電腦可讀媒體(transitorymedia),如調制的數據信號和載波。
還需要說明的是,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設備中還存在另外的相同要素。
本領域技術人員應明白,本申請的實施例可提供為方法、系統或計算機程序產品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、cd-rom、光學存儲器等)上實施的計算機程序產品的形式。
以上所述僅為本申請的實施例而已,并不用于限制本申請。對于本領域技術人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內所作的任何修改、等同替換、改進等,均應包含在本申請的權利要求范圍之內。
本申請實施例公開a1、一種消息獲取方法,包括:
根據客戶端的當前狀態(tài),啟用至少一種激活機制;
在所述客戶端處于當前狀態(tài)期間,根據所述至少一種激活機制,分別激活所述客戶端內的網絡請求服務;以及
根據所述被激活的網絡請求服務和推送服務,從服務端獲取消息。
a2、如a1所述的方法中,所述根據客戶端的當前狀態(tài),啟用至少一種激活機制,包括:
在所述客戶端當前處于非運行狀態(tài)時,啟用至少一種系統服務級的激活機制。
a3、如a2所述的方法中,在所述客戶端當前處于非運行狀態(tài)時,啟用至少一種系統服務級的激活機制,包括以下至少一種:
在所述客戶端當前處于非運行狀態(tài)時,啟用操作系統提供的后臺獲取機制;
在所述客戶端當前處于非運行狀態(tài)時,啟用操作系統提供的靜默推送機制。
a4、如a3所述的方法中,在所述客戶端處于當前狀態(tài)期間,根據所述至少一種激活機制,分別激活所述客戶端內的網絡請求服務,包括以下至少一種:
在所述客戶端處于非運行狀態(tài)期間,調用所述操作系統提供的后臺獲取api,以確定激活時間點,并在所述激活時間點激活所述網絡請求服務;
在所述客戶端處于非運行狀態(tài)期間,接收所述服務端基于所述靜默推送機制通過所述推送服務所推送的靜默消息,并在接收到所述靜默消息時,激活所述網絡請求服務。
a5、如a2所述的方法中,在所述客戶端處于當前狀態(tài)期間,根據所述至少一種激活機制,分別激活所述客戶端內的網絡請求服務,包括:
在所述客戶端處于非運行狀態(tài)期間,根據所述至少一種激活機制,將所述客戶端從非運行狀態(tài)變更為運行狀態(tài),在所述客戶端處于運行狀態(tài)時,激活所述網絡請求服務。
a6、如a2-a5任一項所述的方法中,根據客戶端的當前狀態(tài),啟用至少一種激活機制之前,所述方法還包括:
監(jiān)聽所述客戶端的狀態(tài);
若監(jiān)聽到所述客戶端處于掛起狀態(tài),確定所述客戶端當前處于非運行狀態(tài)。
a7、如a6所述的方法中,所述方法還包括:
在所述客戶端進入后臺狀態(tài)時,調用操作系統提供的后臺任務api,以使所述客戶端在指定時間后進入掛起狀態(tài)。
a8、如a1所述的方法中,所述根據客戶端的當前狀態(tài),啟用至少一種激活機制,包括:
在所述客戶端當前處于運行狀態(tài)時,啟用至少一種應用級的激活機制。
a9、如a8所述的方法中,在所述客戶端當前處于運行狀態(tài)時,啟用至少一種應用級的激活機制,包括:
在所述客戶端當前處于運行狀態(tài)時,啟用所述客戶端內的定時輪詢機制。
a10、如a9所述的方法中,在所述客戶端處于當前狀態(tài)期間,根據所述至少一種激活機制,分別激活所述客戶端內的網絡請求服務,包括:
在所述客戶端處于運行狀態(tài)期間,根據所述定時輪詢機制,定時激活所述網絡請求服務。
a11、如a8-a10任一項所述的方法中,根據客戶端的當前狀態(tài),啟用至少一種激活機制之前,所述方法還包括:
監(jiān)聽所述客戶端的狀態(tài);
若監(jiān)聽到所述客戶端處于非活動狀態(tài)、活動狀態(tài)或后臺狀態(tài),確定所述客戶端當前處于運行狀態(tài)。
a12、如a1-a5以及a8-a10中任一項所述的方法中,所述根據所述被激活的網絡請求服務和推送服務,從服務端獲取消息,包括:
通過推送通道,接收所述服務端通過所述推送服務推送的第一消息;
通過網絡請求通道,接收服務端根據所述被激活的網絡請求服務發(fā)送的網絡請求而返回的第二消息;
通過與所述客戶端的當前狀態(tài)相適應的展示方式,提示所述第一消息和/或第二消息的到達。
本申請實施例還公開了b13、一種消息獲取裝置,包括:
啟用單元,用于根據客戶端的當前狀態(tài),啟用至少一種激活機制;
激活單元,用于在所述客戶端處于當前狀態(tài)期間,根據所述至少一種激活機制,分別激活所述客戶端內的網絡請求服務;以及
獲取單元,用于根據所述被激活的網絡請求服務和推送服務,從服務端獲取消息。
b14、如b13所述的裝置中,所述啟用單元具體用于:
在所述客戶端處于非運行狀態(tài)時,啟用至少一種系統服務級的激活機制。
b15、如b14所述的裝置中,所述啟用單元具體用于執(zhí)行以下至少一種操作:
在所述客戶端當前處于非運行狀態(tài)時,啟用操作系統提供的后臺獲取機制;
在所述客戶端當前處于非運行狀態(tài)時,啟用操作系統提供的靜默推送機制。
b16、如b15所述的裝置中,所述激活單元具體用于執(zhí)行以下至少一種操作:
在所述客戶端處于非運行狀態(tài)期間,調用所述操作系統提供的后臺獲取api,以確定激活時間點,并在所述激活時間點激活所述網絡請求服務;
在所述客戶端處于非運行狀態(tài)期間,接收所述服務端基于所述靜默推送機制通過所述推送服務所推送的靜默消息,并在接收到所述靜默消息時,激活所述網絡請求服務。
b17、如b14所述的裝置中,所述激活單元具體用于:
在所述客戶端處于非運行狀態(tài)期間,根據所述至少一種激活機制,將所述客戶端從非運行狀態(tài)變更為運行狀態(tài),在所述客戶端處于運行狀態(tài)時,激活所述網絡請求服務。
b18、如b14-b17任一項所述的裝置,還包括:
第一監(jiān)聽單元,用于監(jiān)聽所述客戶端的狀態(tài);
第一確定單元,用于在所述第一監(jiān)聽單元監(jiān)聽到所述客戶端處于掛起狀態(tài)時,確定所述客戶端當前處于非運行狀態(tài)。
b19、如b18所述的裝置,還包括:
調用單元,用于在所述客戶端進入后臺狀態(tài)時,調用操作系統提供的后臺任務api,以使所述客戶端在指定時間后進入掛起狀態(tài)。
b20、如b13所述的裝置中,所述啟用單元具體用于:
在所述客戶端當前處于運行狀態(tài)時,啟用至少一種應用級的激活機制。
b21、如b20所述的裝置中,所述啟用單元具體用于:
在所述客戶端當前處于運行狀態(tài)時,啟用所述客戶端內的定時輪詢機制。
b22、如b21所述的裝置中,所述激活單元具體用于:
在所述客戶端處于運行狀態(tài)期間,根據所述定時輪詢機制,定時激活所述網絡請求服務。
b23、如b20-b22任一項所述的裝置,還包括:
第二監(jiān)聽單元,用于監(jiān)聽所述客戶端的狀態(tài);
第二確定單元,用于在所述第二監(jiān)聽單元監(jiān)聽到所述客戶端處于非活動狀態(tài)、活動狀態(tài)或后臺狀態(tài)時,確定所述客戶端當前處于運行狀態(tài)。
b24、如b13-b17以及b20-b22中任一項所述的裝置中,所述獲取單元具體用于:
通過推送通道,接收所述服務端通過所述推送服務推送的第一消息;
通過網絡請求通道,接收服務端根據所述被激活的網絡請求服務發(fā)送的網絡請求而返回的第二消息;
通過與所述客戶端的當前狀態(tài)相適應的展示方式,提示所述第一消息和/或第二消息的到達。
本申請實施例還公開了c25、一種終端設備,包括:存儲器和處理器;所述存儲器用于存儲一條或多條計算機指令,其中,所述一條或多條計算機指令被所述處理器執(zhí)行時能夠實現以下步驟:
根據承載于所述終端設備的客戶端的當前狀態(tài),啟用至少一種激活機制;在所述客戶端處于當前狀態(tài)期間,根據所述至少一種激活機制,分別激活所述客戶端內的網絡請求服務;以及根據所述被激活的網絡請求服務和推送服務,從服務端獲取消息。
c26、如c25所述的終端設備中,所述處理器在執(zhí)行啟用操作時,具體用于:
在所述客戶端處于非運行狀態(tài)時,啟用至少一種系統服務級的激活機制。
c27、如c26所述的終端設備中,所述處理器具體用于執(zhí)行以下至少一種操作:
在所述客戶端當前處于非運行狀態(tài)時,啟用操作系統提供的后臺獲取機制;
在所述客戶端當前處于非運行狀態(tài)時,啟用操作系統提供的靜默推送機制。
c28、如c27所述的終端設備中,所述處理器在執(zhí)行激活操作時,具體用于執(zhí)行以下至少一種操作:
在所述客戶端處于非運行狀態(tài)期間,調用所述操作系統提供的后臺獲取api,以確定激活時間點,并在所述激活時間點激活所述網絡請求服務;
在所述客戶端處于非運行狀態(tài)期間,接收所述服務端基于所述靜默推送機制通過所述推送服務所推送的靜默消息,并在接收到所述靜默消息時,激活所述網絡請求服務。
c29、如c26所述的終端設備中,所述處理器在執(zhí)行激活操作時,具體用于:
在所述客戶端處于非運行狀態(tài)期間,根據所述至少一種激活機制,將所述客戶端從非運行狀態(tài)變更為運行狀態(tài),在所述客戶端處于運行狀態(tài)時,激活所述網絡請求服務。
c30、如c26-c29任一項所述的終端設備中,所述處理器還用于:
監(jiān)聽所述客戶端的狀態(tài);
在監(jiān)聽到所述客戶端處于掛起狀態(tài)時,確定所述客戶端當前處于非運行狀態(tài)。
c31、如c30所述的終端設備中,所述處理器還用于:
在所述客戶端進入后臺狀態(tài)時,調用操作系統提供的后臺任務api,以使所述客戶端在指定時間后進入掛起狀態(tài)。
c32、如c25所述的終端設備中,所述處理器在執(zhí)行啟用操作時,具體用于:
在所述客戶端當前處于運行狀態(tài)時,啟用至少一種應用級的激活機制。
c33、如c32所述的終端設備中,所述處理器具體用于:
在所述客戶端當前處于運行狀態(tài)時,啟用所述客戶端內的定時輪詢機制。
c34、如c33所述的終端設備中,所述處理器在執(zhí)行激活操作時,具體用于:
在所述客戶端處于運行狀態(tài)期間,根據所述定時輪詢機制,定時激活所述網絡請求服務。
c35、如c32-c34任一項所述的終端設備中,所述處理器還用于:
監(jiān)聽所述客戶端的狀態(tài);
在監(jiān)聽到所述客戶端處于非活動狀態(tài)、活動狀態(tài)或后臺狀態(tài)時,確定所述客戶端當前處于運行狀態(tài)。
c36、如c25-c29以及c32-c34中任一項所述的終端設備,還包括:
接收器,用于通過推送通道,接收所述服務端通過所述推送服務推送的第一消息;以及通過網絡請求通道,接收服務端根據所述被激活的網絡請求服務發(fā)送的網絡請求而返回的第二消息;
所述處理器具體用于:通過所述接收器獲取所述第一消息和所述第二消息,并通過與所述客戶端的當前狀態(tài)相適應的展示方式,提示所述第一消息和/或第二消息的到達。
本申請實施例還公開了d37、一種計算機存儲介質,存儲有以下程序指令:
第一程序指令,用于根據客戶端的當前狀態(tài),啟用至少一種激活機制;
第二程序指令,用于在所述客戶端處于當前狀態(tài)期間,根據所述至少一種激活機制,分別激活所述客戶端內的網絡請求服務;
第三程序指令,用于根據所述被激活的網絡請求服務和推送服務,從服務端獲取消息。
d38、如d37所述的計算機存儲介質中,所述第一程序指令具體用于:
在所述客戶端處于非運行狀態(tài)時,啟用至少一種系統服務級的激活機制。
d39、如d38所述的計算機存儲介質中,所述第一程序指令具體用于執(zhí)行以下至少一種操作:
在所述客戶端當前處于非運行狀態(tài)時,啟用操作系統提供的后臺獲取機制;
在所述客戶端當前處于非運行狀態(tài)時,啟用操作系統提供的靜默推送機制。
d40、如d39所述的計算機存儲介質中,所述第二程序指令具體用于執(zhí)行以下至少一種操作:
在所述客戶端處于非運行狀態(tài)期間,調用所述操作系統提供的后臺獲取api,以確定激活時間點,并在所述激活時間點激活所述網絡請求服務;
在所述客戶端處于非運行狀態(tài)期間,接收所述服務端基于所述靜默推送機制通過所述推送服務所推送的靜默消息,并在接收到所述靜默消息時,激活所述網絡請求服務。
d41、如d38所述的計算機存儲介質中,所述第二程序指令具體用于:
在所述客戶端處于非運行狀態(tài)期間,根據所述至少一種激活機制,將所述客戶端從非運行狀態(tài)變更為運行狀態(tài),在所述客戶端處于運行狀態(tài)時,激活所述網絡請求服務。
d42、如d38-d41任一項所述的計算機存儲介質中,所述第一程序指令還用于:
監(jiān)聽所述客戶端的狀態(tài);在監(jiān)聽到所述客戶端處于掛起狀態(tài)時,確定所述客戶端當前處于非運行狀態(tài)。
d43、如d42所述的計算機存儲介質中,所述第一程序指令還用于:
在所述客戶端進入后臺狀態(tài)時,調用操作系統提供的后臺任務api,以使所述客戶端在指定時間后進入掛起狀態(tài)。
d44、如d37所述的計算機存儲介質中,所述第一程序指令具體用于:
在所述客戶端當前處于運行狀態(tài)時,啟用至少一種應用級的激活機制。
d45、如d44所述的計算機存儲介質中,所述第一程序指令具體用于:
在所述客戶端當前處于運行狀態(tài)時,啟用所述客戶端內的定時輪詢機制。
d46、如d45所述的計算機存儲介質中,所述第二程序指令具體用于:
在所述客戶端處于運行狀態(tài)期間,根據所述定時輪詢機制,定時激活所述網絡請求服務。
d47、如d44-d46任一項所述的計算機存儲介質中,所述第一程序指令還用于:
監(jiān)聽所述客戶端的狀態(tài);
在監(jiān)聽到所述客戶端處于非活動狀態(tài)、活動狀態(tài)或后臺狀態(tài)時,確定所述客戶端當前處于運行狀態(tài)。
d48、如d37-d41以及d44-d46中任一項所述的計算機存儲介質中,所述第三程序指令具體用于:
通過推送通道,接收所述服務端通過所述推送服務推送的第一消息;
通過網絡請求通道,接收服務端根據所述被激活的網絡請求服務發(fā)送的網絡請求而返回的第二消息;
通過與所述客戶端的當前狀態(tài)相適應的展示方式,提示所述第一消息和/或第二消息的到達。