首頁 收藏 QQ群
 網(wǎng)站導(dǎo)航

ZNDS智能電視網(wǎng) 推薦當(dāng)貝市場(chǎng)

TV應(yīng)用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計(jì)算器

綜合交流 / 評(píng)測(cè) / 活動(dòng)區(qū)

交流區(qū) | 測(cè)硬件 | 網(wǎng)站活動(dòng) | Z幣中心

新手入門 / 進(jìn)階 / 社區(qū)互助

新手 | 你問我答 | 免費(fèi)刷機(jī)救磚 | ROM固件

查看: 14581|回復(fù): 0
上一主題 下一主題
[教程]

Android中基于XMPP協(xié)議的即時(shí)聊天系統(tǒng)的開發(fā)筆記 - 注冊(cè)、登陸

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2013-8-28 16:27 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
87Android中基于XMPP協(xié)議的即時(shí)聊天系統(tǒng)的開發(fā)筆記 - 注冊(cè)、登陸     
   
        登錄前我們要知道用戶名和密碼(這不是廢話么......),XMPP的用戶名又稱JID,先看一個(gè)XMPP的用戶名范例:wumeng@yiqiwan.com/smack,wumeng相當(dāng)于自定義的用戶名,yiqiwan.com就是上文的結(jié)點(diǎn)標(biāo)識(shí)符,smack可有可無,我理解為是資源標(biāo)識(shí)符的意思,可以自己修改,Android中用asmack默認(rèn)就是smack,我沒管過它。   
   
        注冊(cè):   
        我們的服務(wù)器是HTTP+XMPP,常規(guī)數(shù)據(jù)從HTTP服務(wù)器獲取,聊天才用XMPP;因?yàn)槲覀兊挠脩羰窃诰W(wǎng)站注冊(cè),所以在后臺(tái)我們注冊(cè)用戶以后直接向XMPP的服務(wù)器數(shù)據(jù)庫中插入用戶數(shù)據(jù),不用客戶端注冊(cè),不過為了寫如何注冊(cè),我百度了一下,調(diào)試了一下,發(fā)現(xiàn)沒有問題,就貼上來了:   
Registration reg = new Registration();   
reg.setType(IQ.Type.SET);   
reg.setTo(BaseXmpp.getConnection().getServiceName());   
reg.setUsername("wumeng");// 注意這里注冊(cè)時(shí),參數(shù)是用戶名,不是JID,是@前面的部分。   
reg.setPassword("mengge123");   
reg.addAttribute("RegType", "Android");// 這邊addAttribute不能為空,否則出錯(cuò)。   
PacketFilter filter = new AndFilter(new PacketIDFilter(reg.getPacketID()),   
                new PacketTypeFilter(IQ.class));   
PacketCollector collector = BaseXmpp.getConnection().createPacketCollector(filter);   
BaseXmpp.getConnection().sendPacket(reg);   
IQ result = (IQ) collector.nextResult(SmackConfiguration.getPacketReplyTimeout());   
// Stop queuing results   
collector.cancel();// 停止請(qǐng)求results(是否成功的結(jié)果)   
if (result == null) {   
        System.out.println("服務(wù)器沒有返回結(jié)果");   
} else if (result.getType() == IQ.Type.ERROR) {   
        if (result.getError().toString().equalsIgnoreCase("conflict(409)")) {   
                System.out.println("這個(gè)賬號(hào)已經(jīng)存在");   
        } else {   
                System.out.println("注冊(cè)失敗");   
        }   
} else if (result.getType() == IQ.Type.RESULT) {   
        System.out.println("恭喜你注冊(cè)成功");   
}   
        代碼稍微修改了一下,很簡(jiǎn)單清晰,沒什么可說的reg.addAttribute這里可以添加自定義的字段,比如性別什么的,看自己需求了,但是不能為空,我這里用了注冊(cè)類型。   
   
        登陸:   
        Asmack的登陸很簡(jiǎn)單,只需要JID前面的用戶名和密碼即可,無需再去拼裝JID什么的,代碼如下:   
// 登陸XMPP服務(wù)器   
BaseXmpp.getConnection().login("wumeng","mengge123");   
        登陸前最好用BaseXmpp.getConnection().isConnected()方法先驗(yàn)證下是否已經(jīng)初始化XMPP,否則會(huì)報(bào)錯(cuò);   
        登陸后可以使用BaseXmpp.getConnection().isAuthenticated()查看是否登陸成功

上一篇:一健查詢?cè)捹M(fèi)
下一篇:攝像頭編程

本版積分規(guī)則

Archiver|新帖|標(biāo)簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號(hào) )

網(wǎng)絡(luò)信息服務(wù)信用承諾書 | 增值電信業(yè)務(wù)經(jīng)營許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號(hào)

GMT+8, 2024-12-28 01:35 , Processed in 0.050970 second(s), 14 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報(bào):report#znds.com (請(qǐng)將#替換為@)

© 2007-2024 ZNDS.Com

快速回復(fù) 返回頂部 返回列表