ZNDS智能电视网 推荐当贝市场

TV应用下载 / 资源分享区

软件下载 | 游戏 | 讨论 | 电视计算器

综合交流 / 评测 / 活动区

交流区 | 测硬件 | 网站活动 | Z币中心

新手入门 / 进阶 / 社区互助

新手 | 你问我答 | 免费刷机救砖 | ROM固件

查看: 15760|回复: 0
上一主题 下一主题
[教程]

Android中基于XMPP协议的即时聊天系统的开发笔记 - 注册、登陆

[复制链接]
跳转到指定楼层
楼主
发表于 2013-8-28 16:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
87Android中基于XMPP协议的即时聊天系统的开发笔记 - 注册、登陆     
   
        登录前我们要知道用户名和密码(这不是废话么......),XMPP的用户名又称JID,先看一个XMPP的用户名范例:wumeng@yiqiwan.com/smack,wumeng相当于自定义的用户名,yiqiwan.com就是上文的结点标识符,smack可有可无,我理解为是资源标识符的意思,可以自己修改,Android中用asmack默认就是smack,我没管过它。   
   
        注册:   
        我们的服务器是HTTP+XMPP,常规数据从HTTP服务器获取,聊天才用XMPP;因为我们的用户是在网站注册,所以在后台我们注册用户以后直接向XMPP的服务器数据库中插入用户数据,不用客户端注册,不过为了写如何注册,我百度了一下,调试了一下,发现没有问题,就贴上来了:   
Registration reg = new Registration();   
reg.setType(IQ.Type.SET);   
reg.setTo(BaseXmpp.getConnection().getServiceName());   
reg.setUsername("wumeng");// 注意这里注册时,参数是用户名,不是JID,是@前面的部分。   
reg.setPassword("mengge123");   
reg.addAttribute("RegType", "Android");// 这边addAttribute不能为空,否则出错。   
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();// 停止请求results(是否成功的结果)   
if (result == null) {   
        System.out.println("服务器没有返回结果");   
} else if (result.getType() == IQ.Type.ERROR) {   
        if (result.getError().toString().equalsIgnoreCase("conflict(409)")) {   
                System.out.println("这个账号已经存在");   
        } else {   
                System.out.println("注册失败");   
        }   
} else if (result.getType() == IQ.Type.RESULT) {   
        System.out.println("恭喜你注册成功");   
}   
        代码稍微修改了一下,很简单清晰,没什么可说的reg.addAttribute这里可以添加自定义的字段,比如性别什么的,看自己需求了,但是不能为空,我这里用了注册类型。   
   
        登陆:   
        Asmack的登陆很简单,只需要JID前面的用户名和密码即可,无需再去拼装JID什么的,代码如下:   
// 登陆XMPP服务器   
BaseXmpp.getConnection().login("wumeng","mengge123");   
        登陆前最好用BaseXmpp.getConnection().isConnected()方法先验证下是否已经初始化XMPP,否则会报错;   
        登陆后可以使用BaseXmpp.getConnection().isAuthenticated()查看是否登陆成功

上一篇:一健查询话费
下一篇:摄像头编程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|新帖|标签|软件|Sitemap|ZNDS智能电视网 ( 苏ICP备2023012627号 )

网络信息服务信用承诺书 | 增值电信业务经营许可证:苏B2-20221768 丨 苏公网安备 32011402011373号

GMT+8, 2025-5-30 21:06 , Processed in 0.134826 second(s), 15 queries , Redis On.

Powered by Discuz!

监督举报:report#znds.com (请将#替换为@)

© 2007-2025 ZNDS.Com

快速回复 返回顶部 返回列表