smack 4.1 Openfire Sample example

2019-03-14 04:10发布

I have been using smack 3.4 for my web portal. Also used asmack 3.4 for my android app (aSmack development stopped some years back but there where some unofficial jars that i used. Faced issues with file upload and group chat with this it so want to upgrade to official smack as it has andoid native support now).

But now there is a update on smack they have moved to 4.1(android native integrated):

https://github.com/igniterealtime/Smack/wiki/Smack-4.1-Readme-and-Upgrade-Guide.

So i am looking for some code example/sample project/code snippet with SMACK 4.1 alpha integrated with android/web. Please provide some helpful links.

Also advice on doing/or not doing this upgrade. As smack 4.1 is still not released.

Thanks.

2条回答
何必那么认真
2楼-- · 2019-03-14 04:18

We finally moved to Quickblox, as the current version of smack which supports native android is still under beta Phase.

查看更多
Fickle 薄情
3楼-- · 2019-03-14 04:34

Example of connection using 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();
    }

Chat creation example:

           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();
            }
查看更多
登录 后发表回答