Androidpn裡的Xmpp的理解 訊息推送

2021-06-08 10:11:47 字數 1951 閱讀 4738

用xmpp來實現android的push功能,感覺有點大材小用了,xmpp本身是一種即時通訊協議。

xmpp是一種用於即時通訊的協議,使用過程有點類似於我們使用qq的過程,其使用過程分為三步:

1. 連線伺服器,就好像開啟qq軟體,看**:

if(!mxmppmanager.isconnected())  catch (xmppexception e) 

mxmppmanager.runtask();

} else

這一步主要是連線伺服器,還有設定一些連線的引數,還有設定連線的解析器。

2. 如果沒有使用者,註冊新的帳號和密碼

if(!mxmppmanager.isregistered())

} else if(response.gettype() == iq.type.result)

}} };

// 給註冊的packet設定listener,因為只有等到正真註冊成功後,我們才可以交流

mconnection.addpacketlistener(packetlistener, packetfilter);

registration.settype(iq.type.set);

registration.addattribute("username", newusername);

registration.addattribute("password", newpassword);

// 向伺服器端,傳送註冊packet包,注意其中registration是packet的子類

mconnection.sendpacket(registration);

} else

只要連線了伺服器了,客戶端就可以向伺服器端傳送訊息,傳送是以packet(資料報)來進行傳送的,這個類有很多的子類,註冊的子類為registration。

還有要注意的是,上面的addpacketlistener方法不是給所有傳送的資料報設定listener,而只是針對這次的註冊packet。

3. 用註冊的帳號和密碼進行登陸(像用qq號帳進行登陸一樣)

// 判斷是否已經登陸過了,是否是在登陸狀態

if(!mxmppmanager.isauthenticated())

// 設定伺服器端推送的***

packetfilter packetfilter = new packettypefilter(notificationiq.class);

packetlistener packetlistener = mxmppmanager.getnotificationpacketlistener();

mconnection.addpacketlistener(packetlistener, packetfilter);

mxmppmanager.runtask();

} catch (xmppexception e)

mxmppmanager.startreconnectionthread();

} catch (exception e)

} else

這裡設定了連線的***mconnection.addconnectionlistener(),連線過程中有可以連線突然中斷,連線出錯等等問題,要進行監聽。

設定伺服器推送資訊的listener,接收到資訊後,顯示給使用者。

如果出錯的原因是401(無效的使用者名稱和密碼,則應該進行重新註冊,再連線)

對於伺服器push過來的資訊進行處理,是在packetlistener類裡面,這個介面裡,只要實現乙個方法processpacket(packet packet),從傳過來的packet(資料報)裡獲取自己需要的資料:

public void processpacket(packet packet) 

}}

Androidpn裡的Xmpp的理解

用xmpp來實現android的push功能,感覺有點大材小用了,xmpp本身是一種即時通訊協議。xmpp是一種用於即時通訊的協議,使用過程有點類似於我們使用qq的過程,其使用過程分為三步 1.連線伺服器,就好像開啟qq軟體,看 if mxmppmanager.isconnected catch x...

XMPP的簡單介紹

一 即時通訊簡單介紹 1 簡單說明 有許多的im系統,如aol im yahoo im msn以及qq,它們最大的區別在於各自通訊協議的實現,所以即時通訊技術的核心在於它的傳輸協議。業界經過多次努力,試圖統一各大主要im 商的標準 aol yahoo 及 microsoft 但無一成功,且每一種im...

xmpp的使用經驗

im 標準協議 有xmpp impp prim sip 等,其中xmpp基於xml的協議,具備了很好的擴充套件性 依靠xml的網域名稱空間 並且可以建立在tls上使用sasl認證。1.檔案比如 文件最好是依靠http進行傳輸,而不使用xmpp的socket連線通道 2.二進位制資料,依靠base64...