消息發(fā)送狀態(tài)的處理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及即時(shí)通訊術(shù)領(lǐng)域,特別涉及一種消息發(fā)送狀態(tài)的處理方法及裝置。
【背景技術(shù)】
[0002]隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,各種即時(shí)通信(Instant Messaging,簡(jiǎn)稱為IM)層出不窮,它改變著人們以電子郵件、電話等為主的傳統(tǒng)通訊方式和交流方式,即時(shí)通訊工具的運(yùn)用為溝通創(chuàng)造了一個(gè)良好的渠道,同時(shí)也更具有直觀性和廉價(jià)性,因此被廣泛的應(yīng)用。
[0003]XMPP (Extensible Messaging and Presence Protocol,可擴(kuò)展消息出席協(xié)議)是即時(shí)通信常用的協(xié)議之一,基于XML(Extensible Markup Language,可擴(kuò)展標(biāo)記語言)的協(xié)議??梢酝ㄟ^發(fā)送擴(kuò)展的信息來處理用戶的需求,以及在XMPP的頂端建立如內(nèi)容發(fā)布系統(tǒng)和基于地址的服務(wù)等應(yīng)用程序。而且,XMPP包含了針對(duì)服務(wù)器端的軟件協(xié)議,使之能與另一方進(jìn)行通話,這使得開發(fā)者更容易建立客戶應(yīng)用程序或給一個(gè)配好的系統(tǒng)添加功能。使用即時(shí)通訊應(yīng)用傳遞消息,可以大大提高用戶活躍度,只要消息傳遞雙方均在網(wǎng)絡(luò)上可以互通即可??蛻舳讼蚍?wù)器發(fā)送消息的技術(shù)已經(jīng)非常成熟,所以消息應(yīng)用需要面對(duì)的核心問題是從服務(wù)器到客戶端下行消息的問題,即如何實(shí)現(xiàn)消息推送。
[0004]例如,現(xiàn)有技術(shù)中,XMPP中定義了三個(gè)角色,客戶端,服務(wù)器,網(wǎng)關(guān)。基于XMPP消息服務(wù)器應(yīng)用,建立點(diǎn)對(duì)點(diǎn)的鏈接,但還是需要連接到服務(wù)器來獲取一些連接信息和通信信息。服務(wù)器接收到發(fā)送任務(wù)命令,將數(shù)據(jù)按規(guī)范傳輸至網(wǎng)關(guān),網(wǎng)關(guān)發(fā)送信息到指定的用戶端。
[0005]當(dāng)用戶發(fā)送消息時(shí),消息會(huì)被發(fā)送至服務(wù)器端,同時(shí)該條消息狀態(tài)顯示在用戶的會(huì)話窗口,假定一個(gè)聊天情景,如果用戶A與他的在線好友用戶B建立會(huì)話,他將通過服務(wù)器找到用戶B的信息,直接向用戶B發(fā)送消息指令,用戶B的頂客戶端收到消息指令后建立與用戶A的會(huì)話窗口,用戶B收到消息對(duì)用戶A回復(fù)消息指令。此時(shí)該條消息向XMPP服務(wù)器發(fā)送,同時(shí)消息的當(dāng)前狀態(tài)直接在視圖會(huì)話窗口內(nèi)部顯示(如圖1所示)。此消息觸發(fā)事件可能的狀態(tài)為:已發(fā)送返回(成功)、已發(fā)送未返回(超時(shí))和發(fā)送失敗等狀態(tài)其中之一。但是,由于基于XMPP協(xié)議的現(xiàn)有技術(shù)在移動(dòng)端(即客戶端)的開發(fā)中未對(duì)處理消息發(fā)送狀態(tài)有做論述,消息狀態(tài)的更新僅僅在視圖會(huì)話窗口內(nèi)部進(jìn)行處理,當(dāng)消息發(fā)送失敗或服務(wù)器未及時(shí)反饋,當(dāng)前會(huì)話窗口的視圖界面將處于長(zhǎng)期等待狀態(tài),然而我們必須及時(shí)了解消息發(fā)送狀態(tài),以便于及時(shí)控制用戶的下一步行為;且在移動(dòng)端的使用中,視圖會(huì)話窗口的切換是很頻繁的,獨(dú)立單一的視圖應(yīng)用在實(shí)際使用過程中并不常見,在實(shí)際應(yīng)用中發(fā)送消息會(huì)因設(shè)備、網(wǎng)絡(luò)等其他原因?qū)е挛闯晒Πl(fā)送,即有可能為超時(shí)或失敗等,根據(jù)上述用戶A和用戶B之間進(jìn)行的即時(shí)通訊技術(shù)方案,用戶A若執(zhí)行了切換視圖操作使其不在當(dāng)前聊天頁面,當(dāng)再次返回視圖時(shí),消息狀態(tài)在視圖界面顯示中可能還是處于長(zhǎng)久的等待狀態(tài),或者可能產(chǎn)生狀態(tài)丟失,從而顯示不準(zhǔn)確,使用戶產(chǎn)生疑惑,也不便于執(zhí)行重發(fā)、刪除等操作。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實(shí)施例提供了一種消息發(fā)送狀態(tài)的處理方法,以及時(shí)、準(zhǔn)確地更新顯示即時(shí)通訊中消息的發(fā)送狀態(tài),來提高時(shí)效性溝通的準(zhǔn)確性和及時(shí)反饋性,增強(qiáng)用戶體驗(yàn)。該方法包括:在移動(dòng)終端的用戶使用即時(shí)通訊應(yīng)用程序發(fā)送消息時(shí),為所述移動(dòng)終端的用戶發(fā)送的每一條消息設(shè)置一個(gè)消息編號(hào),保存每一條消息的消息編號(hào),該消息編號(hào)在消息發(fā)送系統(tǒng)中是全局唯一的;根據(jù)消息編號(hào)實(shí)時(shí)更新并保存每一條消息當(dāng)前的發(fā)送狀態(tài);實(shí)時(shí)將每一條消息當(dāng)前的發(fā)送狀態(tài)發(fā)送給即時(shí)通訊應(yīng)用程序的會(huì)話窗口進(jìn)行顯示。
[0007]在一個(gè)實(shí)施例中,保存每一條消息的消息編號(hào),包括:保存每一條消息的消息編號(hào)的同時(shí),保存每一條消息的發(fā)送時(shí)刻,根據(jù)消息編號(hào)實(shí)時(shí)更新并保存每一條消息當(dāng)前的發(fā)送狀態(tài),包括:保存每一條消息的消息編號(hào)時(shí),保存每一條消息當(dāng)前的發(fā)送狀態(tài)為正在發(fā)送;接收到XMPP服務(wù)器對(duì)消息反饋的成功消息,找到消息編號(hào)與所述成功消息攜帶的消息編號(hào)一致的消息,將該消息當(dāng)前的發(fā)送狀態(tài)更新并保存為發(fā)送成功;接收到XMPP服務(wù)器對(duì)消息反饋的失敗消息,找到消息編號(hào)與所述失敗消息攜帶的消息編號(hào)一致的消息,將該消息當(dāng)前的發(fā)送狀態(tài)更新并保存為發(fā)送失??;找到當(dāng)前時(shí)刻距離發(fā)送時(shí)刻的時(shí)長(zhǎng)大于預(yù)設(shè)時(shí)長(zhǎng)的消息編號(hào),且當(dāng)前未收到XMPP服務(wù)器對(duì)該消息編號(hào)對(duì)應(yīng)消息的反饋消息,將該消息編號(hào)對(duì)應(yīng)消息當(dāng)前的發(fā)送狀態(tài)更新并保存為發(fā)送超時(shí)。
[0008]在一個(gè)實(shí)施例中,為所述移動(dòng)終端的用戶發(fā)送的每一條消息設(shè)置一個(gè)消息編號(hào),包括:根據(jù)可擴(kuò)展消息出席協(xié)議XMPP為所述移動(dòng)終端的用戶發(fā)送的每一條消息設(shè)置一個(gè)消息編號(hào)。
[0009]在一個(gè)實(shí)施例中,保存每一條消息的消息編號(hào),包括:以數(shù)組的形式保存每一條消息的消息編號(hào)。
[0010]在一個(gè)實(shí)施例中,所述每一條消息的發(fā)送時(shí)刻的字段和所述預(yù)設(shè)時(shí)長(zhǎng)的字段存入在一個(gè)字典中,所述字典在所述數(shù)組中。
[0011]本發(fā)明實(shí)施例還提供了一種消息發(fā)送狀態(tài)的處理裝置,以及時(shí)、準(zhǔn)確地更新顯示即時(shí)通訊中消息的發(fā)送狀態(tài),來提高時(shí)效性溝通的準(zhǔn)確性和及時(shí)反饋性,增強(qiáng)用戶體驗(yàn)。該裝置包括:設(shè)置保存模塊,用于在移動(dòng)終端的用戶使用即時(shí)通訊應(yīng)用程序發(fā)送消息時(shí),為所述移動(dòng)終端的用戶發(fā)送的每一條消息設(shè)置一個(gè)消息編號(hào),保存每一條消息的消息編號(hào),該消息編號(hào)在消息發(fā)送系統(tǒng)中是全局唯一的;狀態(tài)更新模塊,用于根據(jù)消息編號(hào)實(shí)時(shí)更新并保存每一條消息當(dāng)前的發(fā)送狀態(tài);狀態(tài)發(fā)送模塊,用于實(shí)時(shí)將每一條消息當(dāng)前的發(fā)送狀態(tài)發(fā)送給即時(shí)通訊應(yīng)用程序的會(huì)話窗口進(jìn)行顯示。
[0012]在一個(gè)實(shí)施例中,所述設(shè)置保存模塊,具體用于保存每一條消息的消息編號(hào)的同時(shí),保存每一條消息的發(fā)送時(shí)刻;所述狀態(tài)更新模塊,包括:第一狀態(tài)更新單元,用于保存每一條消息的消息編號(hào)時(shí),保存每一條消息當(dāng)前的發(fā)送狀態(tài)為正在發(fā)送;第二狀態(tài)更新單元,用于接收到XMPP服務(wù)器對(duì)消息反饋的成功消息,找到消息編號(hào)與所述成功消息攜帶的消息編號(hào)一致的消息,將該消息當(dāng)前的發(fā)送狀態(tài)更新并保存為發(fā)送成功;第三狀態(tài)更新單元,用于接收到XMPP服務(wù)器對(duì)消息反饋的失敗消息,找到消息編號(hào)與所述失敗消息攜帶的消息編號(hào)一致的消息,將該消息當(dāng)前的發(fā)送狀態(tài)更新并保存為發(fā)送失敗;第四狀態(tài)更新單元,用于找到當(dāng)前時(shí)刻距離發(fā)送時(shí)刻的時(shí)長(zhǎng)大于預(yù)設(shè)時(shí)長(zhǎng)的消息編號(hào),且當(dāng)前未收到XMPP服務(wù)器對(duì)該消息編號(hào)對(duì)應(yīng)消息的反饋消息,將該消息編號(hào)對(duì)應(yīng)消息當(dāng)前的發(fā)送狀態(tài)更新并保存為發(fā)送超時(shí)。
[0013]在一個(gè)實(shí)施例中,所述設(shè)置保存模塊,還用于根據(jù)可擴(kuò)展消息出席協(xié)議XMPP為所述移動(dòng)終端的用戶發(fā)送的每一條消息設(shè)置一個(gè)消息編號(hào)。
[0014]在一個(gè)實(shí)施例中,所述設(shè)置保存模塊,具體用于以數(shù)組的形式保存每一條消息的消息編號(hào)。
[0015]在一個(gè)實(shí)施例中,所述每一條消息的發(fā)送時(shí)刻的字段和所述預(yù)設(shè)時(shí)長(zhǎng)的字段存入在一個(gè)字典中,所述字典在所述數(shù)組中。
[0016]在本發(fā)明實(shí)施例中,在移動(dòng)終端的用戶使用即時(shí)通訊應(yīng)用程序發(fā)送消息時(shí),通過為每一條消息設(shè)置一個(gè)全局唯一的消息編號(hào),并在保存每一條消息的消息編號(hào)后,實(shí)時(shí)根據(jù)消息編號(hào)更新并保存每一條消息當(dāng)前的發(fā)送狀態(tài),進(jìn)而再將每一條消息當(dāng)前的發(fā)送狀態(tài)發(fā)送給即時(shí)通訊應(yīng)用程序的會(huì)話窗口進(jìn)行顯示,與現(xiàn)有技術(shù)中消息狀態(tài)的更新在視圖會(huì)話窗口內(nèi)部進(jìn)行處理的方式相比,本申請(qǐng)可以保證消息的發(fā)送狀態(tài)不丟失,在用戶進(jìn)行視圖會(huì)話窗口的切換或再次返回時(shí),只要會(huì)話窗口沒有銷毀,就可以確保及時(shí)、準(zhǔn)確地更新顯示即時(shí)通訊中消息的發(fā)送狀態(tài),來提高時(shí)效性溝通的準(zhǔn)確性和及時(shí)反饋性,增強(qiáng)用戶體驗(yàn),便于用戶及時(shí)進(jìn)行“重發(fā)”、“刪除”等操作。
【附圖說明】
[0017]此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,并不構(gòu)成對(duì)本發(fā)明的限定。在附圖中:
[0018]