asysbang

 找回密码
 立即注册
查看: 6321|回复: 0
打印 上一主题 下一主题

asmack使用总结

[复制链接]

510

主题

2

好友

6311

积分

管理员

Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

最佳新人 活跃会员 热心会员 推广达人 宣传达人 灌水之王 突出贡献 优秀版主 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2014-8-27 15:00:53 |只看该作者 |倒序浏览
从smack4.1开始就已经替代了asmack   所以以后只用smack就可以了

smack_4_1_1/releasedocs/documentation/gettingstarted.html
这个文档是入门教程
smack_4_1_3/javadoc/index.html
查看所有的类,这个版本的java包比较多,怎么找到对应的类所在的文件
下载smack源代码,然后通过find命令找到对应的文件,比如roster.java在smack-im目录下,那么要想引用Roster类就需要smack-im.jar

addPacketListener 已经废弃,建议通过addAsyncStanzaListener 和addSyncStanzaListener来代替

message类型还多了inactive 和active  可以用来实现 “正在输入...”

一些流程问题可以参考Spark的例子

需要jar文件
jxmpp-util-cache-0.4.1.jar, jxmpp-core-0.4.1.jar
http://grepcode.com/snapshot/repo1.maven.org/maven2/org.jxmpp/jxmpp-core/0.4.1/
http://grepcode.com/snapshot/repo1.maven.org/maven2/org.jxmpp/jxmpp-util-cache/0.4.1
如果服务器地址是域名的话 还需要minidns-0.1.1.jar

安卓端还需要smack-android-4.1.1.jar  要不会报空指针错误
smack-android-extensions-4.1.1.jar

还需要设置SecurityMode.disabled  要不会有各种问题。。。。

                XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration
                        .builder()
                        .setCompressionEnabled(false)
                        .setSecurityMode(
                                org.jivesoftware.smack.ConnectionConfiguration.SecurityMode.disabled)
                        .setServiceName("10.6.0.144").setHost("10.6.0.144")
                        .setPort(5222).build();
                AbstractXMPPConnection conn = new XMPPTCPConnection(config);


自定义属性 需要通过ProviderManager.addExtensionProvider 或者addIQProvider 这个来添加对应的解析
监听到之后进行强转就可以拿到对应的属性了




http://asmack.org
http://asmack.freakempire.de


1、创建多人聊天室

                      String room_name = "room_name@conference.jwleng/pdchat";                MultiUserChat room = new MultiUserChat(PDChat.getConnectionManger().getConnection(), room_name);


      加入聊天室 时  "room_name@conference.jwleng/pdchat";  不能带resource

下载地址

http://asmack.freakempire.de/


//                String room_name = "room_name@conference.jwleng/pdchat";
//                MultiUserChat room = new MultiUserChat(PDChat.getConnectionManger().getConnection(), room_name);
//                try {
//                        System.out.println("======111111============");
//                        room.join("name1_"+name);
//                        System.out.println("======2222============");
//                } catch (Exception e2) {
//                        e2.printStackTrace();
//                }
//               
                System.out.println("======searchUserssearchUserssearchUserssearchUserssearchUserssearchUsers=========");
                String room_name1 = "room_name@conference.jwleng";
                MultiUserChat room1 = new MultiUserChat(PDChat.getConnectionManger().getConnection(), room_name1);
                try {
                        System.out.println("======111111===11111111111111=========");
                        room1.join("name1_"+name);
                        System.out.println("======2222=======2222222222222222=====");
                        boolean b = MultiUserChat.isServiceEnabled(PDChat.getConnectionManger().getConnection(), "88@jwleng/pdchat");
                        System.out.println("============xxxx======"+b);
                        //b = MultiUserChat.isServiceEnabled(PDChat.getConnectionManger().getConnection(), "88@jwleng");
                        //System.out.println("============xxxx==11111111111===="+b);
                        
                        List<String> rooms = MultiUserChat.getJoinedRooms(PDChat.getConnectionManger().getConnection(), "88@jwleng/pdchat");
                        System.out.println("=====size======"+rooms.size());
                } catch (Exception e2) {
                        e2.printStackTrace();
                }
               
               
                System.out.println("======searchUserssearchUserssearchUserssearchUserssearchUserssearchUsers====11111111111=====");

                当一个用户下线时,会自动退出聊天室
                设置了bookmarkedConference 也只是在服务器端存了一个preference,还需要下次登录时代码登录,参考Spark
  





1



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|aSys-帮 ( 京ICP备13033689号 )

GMT+8, 2024-7-2 02:42 , Processed in 0.043048 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部