asysbang

标题: asmack使用总结 [打印本页]

作者: admin    时间: 2014-8-27 15:00
标题: asmack使用总结
从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








欢迎光临 asysbang (http://asysbang.com/) Powered by Discuz! X2.5