smack android 示例代码,Android smack4.2的简单使用

1.使用背景

在搭建即时通讯的时候,一般采用Openfire+smack实现(如:第三方环信 )。由于Asmack已经废弃。所以先使用官方最新库 : GitHub上的指导

2.使用大致流程

2.1新建一个工程,导入以下依赖repositories {

maven {

url 'https://oss.sonatype.org/content/repositories/snapshots'

}

mavenCentral()

}dependencies {

compile "org.igniterealtime.smack:smack-android-extensions:4.2.0"

compile "org.igniterealtime.smack:smack-tcp:4.2.0"

compile "org.igniterealtime.smack:smack-android:4.2.0"

}

2.2连接Openfire服务器InetAddress address = InetAddress.getByName(Const.ip);

//配置信息

XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()

.setXmppDomain("192.168.100.116")//设置xmpp域名

.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)//安全模式认证

.setHostAddress(address)

.setPort(Const.port)

.build();

xmpptcpConnection = new XMPPTCPConnection(config);//连接类

xmpptcpConnection.connect();

2.3 .用户登录//设置是否在线状态,和状态说明

Presence presence = new Presence(Presence.Type.unavailable);

presence.setStatus("Gone fishing");

xmpptcpConnection.sendStanza(presence);

xmpptcpConnection.login(userName, password);//关键代码

2.4用户好友获取

两种方式:(1)Roster instanceFor = Roster.getInstanceFor(xmpptcpConnection);

Set entries = instanceFor.getEntries();

for (RosterEntry entry:entries) {

entry.getType();

entry.getName();//昵称

entry.getGroups();//好友所在的组

entry.getJid().getDomain();//好友域名

entry.getJid().getLocalpartOrNull();//好友名称

entry.getUser();//(废弃)好友完整名称(包括域名)

}

(2)Roster instanceFor = Roster.getInstanceFor(xmpptcpConnection);

Collection groups = instanceFor.getGroups();

group.getName();//获取用户组名

for (RosterGroup group:groups) {

List entries = group.getEntries();

for (RosterEntry entry : entries) {

}

}

2.5接收消息和发送消息

(1) 接收消息:获取聊天管理器,注册获取消息监听ChatManager chatManager = ChatManager.getInstanceFor(xmpptcpConnection);

chatManager.addIncomingListener(new IncomingChatMessageListener() {

@Override

public void newIncomingMessage(EntityBareJid from, Message message, Chat chat) {

if (message.getBody() != null) {

Log.e("消息接收——", message.getBody().toString() + "");

}

}

});

(2)发送消息:获取聊天管理器,指定消息接收人,发送消息ChatManager chatManager = ChatManager.getInstanceFor(xmpptcpConnection);

//JidCreate.entityBareFrom("用户名@域名");获取用户ID

EntityBareJid jid = JidCreate.entityBareFrom("xxx@192.168.100.116");

Chat chat = chatManager.chatWith(jid);

chat.send("woaini1");

//Add a new listener for outgoing chat messages.

chatManager.addOutgoingListener(new OutgoingChatMessageListener() {

@Override

public void newOutgoingMessage(EntityBareJid to, Message message, Chat chat) {

Log.e("发哦送消息", "" + message.getBody().toString());

}

});

至于其他的相关操作可能留待以后吧。。。。第一次在简书上写文章,如若有不当之处,请指教

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值