2017-01-20 9 views
0

ejabberd을 사용하여 일대일 채팅을 구현하고 있습니다. ejabberd 설정 파일에 mod_mam 모듈을 활성화했습니다. 이제 mysql DB에 채팅을 저장할 수 있습니다. 채팅 기록을 가져올 수 없습니다. 내 안드로이드 응용 프로그램에 치매 라이브러리을 사용하고 있습니다. 내 문제를 봤지만 해결책을 찾지 못했습니다. 누구나 해결책을 말해 줄 수 있습니까? 미리 감사드립니다.smack 클라이언트 ejabberd를 사용하여 mysql db에서 채팅 기록을 검색하는 방법

답변

0

다음과 같은 방법으로 smack 양식 mysql을 사용하여 보관 된 메시지를 가져옵니다. DB에서 마지막 maxResults 개의 결과를 반환합니다. 아래 코드는 기본적으로 기존 라이브러리 메서드를 사용하여 반환을 가져옵니다.

public MamManager.MamQueryResult getArchivedMessages(String jid, int maxResults) { 

    MamManager mamManager = MamManager.getInstanceFor(connection); 
    try { 
     DataForm form = new DataForm(DataForm.Type.submit); 
     FormField field = new FormField(FormField.FORM_TYPE); 
     field.setType(FormField.Type.hidden); 
     field.addValue(MamElements.NAMESPACE); 
     form.addField(field); 

     FormField formField = new FormField("with"); 
     formField.addValue(jid); 
     form.addField(formField); 

     RSMSet rsmSet = new RSMSet(maxResults, "", RSMSet.PageDirection.before); 
     MamManager.MamQueryResult mamQueryResult = mamManager.page(form, rsmSet); 

     return mamQueryResult; 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

기능 아래에 매겨진 방법의 사용이 도움이

public MamManager.MamQueryResult getMessageBefore(String jid, String messageId) { 

    MamManager mamManager = MamManager.getInstanceFor(connection); 
    try { 
     MamManager.MamQueryResult mamQueryResult = 
      mamManager.pageBefore(JidCreate.bareFrom(jid), messageId, pageSize); 
     return mamQueryResult; 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

희망이를 얻으려면.