我的门户网站一直使用 smack 3.4。我的 Android 应用程序也使用了 asmack 3.4
(aSmack 的开发几年前就停止了,但我使用了一些非官方的 jar。遇到了文件上传和群组聊天的问题,所以想升级到官方 smack,因为它现在有 android 原生支持)。
但现在 smack 上有更新,他们已经转移到 4.1(android 原生集成):
https://github.com/igniterealtime/Smack/wiki/Smack-4.1-Readme-and-Upgrade-Guide https://github.com/igniterealtime/Smack/wiki/Smack-4.1-Readme-and-Upgrade-Guide.
所以我正在寻找一些代码示例/示例项目/代码片段SMACK 4.1 阿尔法与安卓/网络集成。
请提供一些有用的链接。
还有关于进行/或不进行此升级的建议。由于smack 4.1还没有发布。
Thanks.
使用 SSL 的连接示例 (smack-4.1.0-beta2-SNAPSHOT-2015-02-01) :
XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration.builder();
config.setSecurityMode(ConnectionConfiguration.SecurityMode.required);
//For OLD STYLE SSL
//config.setSecurityMode(ConnectionConfiguration.SecurityMode.enabled);
config.setUsernameAndPassword(USERNAME + "@" + DOMAIN, "PASSWORD");
config.setServiceName(DOMAIN);
config.setHost(DOMAIN);
config.setPort(PORT);
config.setDebuggerEnabled(true);
//OLD STYLE SSL
//config.setSocketFactory(SSLSocketFactory.getDefault());
try {
SSLContext sc = SSLContext.getInstance("TLS");
MemorizingTrustManager mtm = new MemorizingTrustManager(ctx);
sc.init(null, MemorizingTrustManager.getInstanceList(ctx), new SecureRandom());
config.setCustomSSLContext(sc);
config.setHostnameVerifier(mtm.wrapHostnameVerifier(new org.apache.http.conn.ssl.StrictHostnameVerifier()));
} catch (NoSuchAlgorithmException | KeyManagementException e) {
throw new IllegalStateException(e);
}
mConnection = new XMPPTCPConnection(config.build());
mConnection.setPacketReplyTimeout(10000);
try {
mConnection.connect();
mConnection.login();
} catch (SmackException | IOException | XMPPException e) {
e.printStackTrace();
}
- https://github.com/ge0rg/MemorizingTrustManager/tree/master/src/de/duenndns/ssl https://github.com/ge0rg/MemorizingTrustManager/tree/master/src/de/duenndns/ssl
聊天创建示例:
final ChatManager chatManager = ChatManager.getInstanceFor(mConnection);
chatManager.addChatListener(new ChatManagerListener() {
@Override
public void chatCreated(Chat chat, boolean b) {
chat.addMessageListener(new ChatMessageListener() {
@Override
public void processMessage(Chat chat, Message message) {
mServerResponse.gotMessage(message.getBody());
Log.d(TAG, message.toString());
}
});
}
});
Chat chat2 = chatManager.createChat(USERNAME + "@" + DOMAIN);
try {
chat2.sendMessage("text");
} catch (SmackException.NotConnectedException e) {
e.printStackTrace();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)