2014-09-29 35 views
4

我一直在使用smack 3.4作爲我的門戶網站。也用asmack 3.4爲我的android應用程序 (aSmack開發幾年前停止,但在那裏我使用了一些非官方的瓶子。面對與文件上傳和羣聊這個問題,所以想升級到官方smack,因爲它具有andoid原生支持現在)。smack 4.1 Openfire示例

但現在有上咂嘴,他們已經轉移到4.1(Android原生集成)一個更新:

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

所以我正在尋找一些代碼示例/示例項目/代碼片段與SMACK 4.1 alpha與android/web集成。 請提供一些有用的鏈接。

也有關於做/不做此升級的建議。由於smack 4.1還沒有發佈。

謝謝。

+0

「aSmack開發停止了幾年,但在那裏有一些非官方的罐子,我用」 - 不正確,aSmack dev elopment活躍,並提供官方罐子。 – Flow 2014-09-29 13:42:47

回答

1

我們終於搬到了Quickblox,因爲當前支持native android的smack版本仍處於測試階段。

8

使用SSL連接的實施例(咂嘴-4.1.0-β2-快照2015年2月1日):

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(); 
    } 

聊天創建例如:

  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(); 
      } 
+0

Android Studio說我無法解決'MemorizingTrustManager',我的目標是版本4.1.4(smack-java7,smack-tcp和smack-im),我錯過了什麼嗎?我應該使用別的東西而不是sma too? – 2015-11-15 13:29:25

+0

https://github.com/ge0rg/MemorizingTrustManager/tree/master/src/de/duenndns/ssl – Alexey 2015-11-15 16:49:04

+0

@Alexey我們如何獲得我們創建的所有'Chat'作爲alist。是否有構建它的方法,或者我們必須爲它創建一個自定義API? – ADM 2018-02-01 12:43:34

相關問題