Android smack4.2的簡單使用

1.使用背景

在搭建即時通訊的時候,一般采用Openfire+smack實現(xiàn)(如:第三方環(huán)信 )。由于Asmack已經(jīng)廢棄。所以先使用官方最新庫 : GitHub上的指導(dǎo)


2.使用大致流程

2.1新建一個工程,導(dǎo)入以下依賴

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服務(wù)器

InetAddress address = InetAddress.getByName(Const.ip);

//配置信息

XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()

.setXmppDomain("192.168.100.116")//設(shè)置xmpp域名

.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)//安全模式認證

.setHostAddress(address)

.setPort(Const.port)

.build();

xmpptcpConnection = new XMPPTCPConnection(config);//連接類

xmpptcpConnection.connect();

2.3 .用戶登錄

//設(shè)置是否在線狀態(tài),和狀態(tài)說明

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

presence.setStatus("Gone fishing");

xmpptcpConnection.sendStanza(presence);

xmpptcpConnection.login(userName, password);//關(guān)鍵代碼

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接收消息和發(fā)送消息

(1) 接收消息:獲取聊天管理器,注冊獲取消息監(jiān)聽

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)發(fā)送消息:獲取聊天管理器,指定消息接收人,發(fā)送消息

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("發(fā)哦送消息", "" + message.getBody().toString());

? ? ? }

});

至于其他的相關(guān)操作可能留待以后吧。。。。第一次在簡書上寫文章,如若有不當之處,請指教

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,525評論 19 139
  • 關(guān)于XMPP最權(quán)威的講解:http://www.jabbercn.org/RFC3920(這個才是最權(quán)威的,下面文...
    隨風飄蕩的小逗逼閱讀 1,638評論 1 5
  • 即時通訊系列閱讀 即時通訊基礎(chǔ) 即時通訊:XMPP基礎(chǔ) 即時通訊:XMPP項目實踐-微聊 Smack類庫最好的學(xué)習...
    JackChen1024閱讀 2,028評論 2 9
  • 一、Smack庫概述 ????Smack是一個開源、易用的XMPP/Jabber客戶端庫,它使用Java語言開發(fā),...
    AndryYu閱讀 6,529評論 2 13
  • 親愛的朋友您好: 我有一屋,準備賣出了,我屋期待有緣買家,我也期待有緣的朋友。 她位于西夏區(qū)西花園北...
    晚起畫蛾眉閱讀 874評論 0 4

友情鏈接更多精彩內(nèi)容