用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...