2014-09-30 2 views
1

난 채팅 애플리케이션 asmack과의 Openfire 사용하고있는 두 가지 문제점 : 오프라인 메시지 인코딩오프라인 메시지가 ???? , aSmack과의 Openfire

  1. 문제점 :

    • 사용자 A가 사용자 B에게 메시지를 보내는 (오프라인)
    • B는 오프라인 메시지를 수신 할 수 있지만 사용자 A가 페르시아어 문자 사용자 B를 사용하면 '????'와 같은 메시지가 표시됩니다.
  2. 메시지를 어떻게 탐지 했습니까?

다음 코드를 사용하여 보낸 메시지를 설정합니다. 아래 코드가 작동하지만 인터넷 접속이 좋지 않을 때 가끔 인터넷 접속을 사용할 때 보낸 메시지가 실제로 전송되지는 않습니다.

try { 
    connection.sendPacket(msg); 
    db.setMessageState(id, MessageModel.STATE_SENT); 
} catch (Exception e) { 
    db.setMessageState(id, MessageModel.STATE_ERROR); 
} 

편집 : 내 첫 번째 문제는 해결되었다

, this 링크는 도움이 될 수 있습니다.

+0

나는 사격에 익숙하지 해요,하지만 당신은 내가 온라인/오프라인 메시지를 표시하기 위해 같은 방법을 사용하여 온라인 메시지와 함께 문제가 없습니다 정말 문제 나 디스플레이 – user902383

+0

를 디코드 확인하는 경우가 좋은 것 (사용자 B가 온라인 상태 임) 서버 패널에서 보관 메시지를 볼 때 인코딩 문제가 발생했습니다. 감사합니다. –

+0

동일한 게시물에 여러 질문을하지 마십시오. – Flow

답변

-1
configureConnection(ProviderManager.getInstance()); 
      OfflineMessageManager offlineManager = new OfflineMessageManager( 
       connection); 
      int count = offlineManager.getMessageCount(); 
        Iterator<Message> it = offlineManager.getMessages(); 
         while (it.hasNext()) { 
           Message m = it.next(); 
           String fromName = m.getFrom(); 
           //Date currentDate = new Date(); 
           String text = m.getBody() + " (offline)"; 
           if(fromName.contains("/Smack")){ 
            fromName = fromName.replace("/Smack",""); 
           } 
           Log.i("offile chat message with user name ",text+" username "+fromName); 
           dbHelper.addmessageUser(fromName, text, "0", "1",""+System.currentTimeMillis()); 
           if(offlineMsgs.containsKey(fromName))  
           {  
            offlineMsgs.get(fromName).add(m);  
           }else{  
            ArrayList<Message> temp = new ArrayList<Message>();  
            temp.add(m);  
            offlineMsgs.put(fromName, temp);  
           } 
           // ... 
         } 


         offlineManager.deleteMessages(); 



    // 
public void configureConnection(ProviderManager pm) { 


     // Private Data Storage 
      pm.addIQProvider("query", "jabber:iq:private", new PrivateDataManager.PrivateDataIQProvider()); 
      // Time 
      try 
      { 
       pm.addIQProvider("query", "jabber:iq:time", Class.forName("org.jivesoftware.smackx.packet.Time")); 
      } 
      catch (ClassNotFoundException e) 
      { 
       Log.w("TestClient", "Can't load class for org.jivesoftware.smackx.packet.Time"); 
      } 
      // Roster Exchange 
      pm.addExtensionProvider("x", "jabber:x:roster", new RosterExchangeProvider()); 
      // Message Events 
      pm.addExtensionProvider("x", "jabber:x:event", new MessageEventProvider()); 
      // Chat State 
      pm.addExtensionProvider("active", "http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider()); 
      pm.addExtensionProvider("composing", "http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider()); 
      pm.addExtensionProvider("paused", "http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider()); 
      pm.addExtensionProvider("inactive", "http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider()); 
      pm.addExtensionProvider("gone", "http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider()); 
      // XHTML 
      pm.addExtensionProvider("html", "http://jabber.org/protocol/xhtml-im", new XHTMLExtensionProvider()); 
      // Group Chat Invitations 
      pm.addExtensionProvider("x", "jabber:x:conference", new GroupChatInvitation.Provider()); 
      // Service Discovery # Items 
      pm.addIQProvider("query", "http://jabber.org/protocol/disco#items", new DiscoverItemsProvider()); 
      // Service Discovery # Info 
      pm.addIQProvider("query", "http://jabber.org/protocol/disco#info", new DiscoverInfoProvider()); 
      // Data Forms 
      pm.addExtensionProvider("x", "jabber:x:data", new DataFormProvider()); 
      // MUC User 
      pm.addExtensionProvider("x", "http://jabber.org/protocol/muc#user", new MUCUserProvider()); 
      // MUC Admin 
      pm.addIQProvider("query", "http://jabber.org/protocol/muc#admin", new MUCAdminProvider()); 
      // MUC Owner 
      pm.addIQProvider("query", "http://jabber.org/protocol/muc#owner", new MUCOwnerProvider()); 
      // Delayed Delivery 
      pm.addExtensionProvider("x", "jabber:x:delay", new DelayInformationProvider()); 
      // Version 
      try 
      { 
       pm.addIQProvider("query", "jabber:iq:version", Class.forName("org.jivesoftware.smackx.packet.Version")); 
      } 
      catch (ClassNotFoundException e) 
      { 
       // Not sure what's happening here. 
      } 
      // VCard 
      pm.addIQProvider("vCard", "vcard-temp", new VCardProvider()); 
      // Offline Message Requests 
      pm.addIQProvider("offline", "http://jabber.org/protocol/offline", new OfflineMessageRequest.Provider()); 
      // Offline Message Indicator 
      pm.addExtensionProvider("offline", "http://jabber.org/protocol/offline", new OfflineMessageInfo.Provider()); 
      // Last Activity 
      pm.addIQProvider("query", "jabber:iq:last", new LastActivity.Provider()); 
      // User Search 
      pm.addIQProvider("query", "jabber:iq:search", new UserSearch.Provider()); 
      // SharedGroupsInfo 
      pm.addIQProvider("sharedgroup", "http://www.jivesoftware.org/protocol/sharedgroup", new SharedGroupsInfo.Provider()); 
      // JEP-33: Extended Stanza Addressing 
      pm.addExtensionProvider("addresses", "http://jabber.org/protocol/address", new MultipleAddressesProvider()); 
      // FileTransfer 
      pm.addIQProvider("si", "http://jabber.org/protocol/si", new StreamInitiationProvider()); 
      pm.addIQProvider("query", "http://jabber.org/protocol/bytestreams", new BytestreamsProvider()); 
      // Privacy 
      pm.addIQProvider("query", "jabber:iq:privacy", new PrivacyProvider()); 
      pm.addIQProvider("command", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider()); 
      pm.addExtensionProvider("malformed-action", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider.MalformedActionError()); 
      pm.addExtensionProvider("bad-locale", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider.BadLocaleError()); 
      pm.addExtensionProvider("bad-payload", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider.BadPayloadError()); 
      pm.addExtensionProvider("bad-sessionid", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider.BadSessionIDError()); 
      pm.addExtensionProvider("session-expired", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider.SessionExpiredError()); 
     } 
+0

코드에 설명을 입력하십시오. – Bowdzone