오프라인 메시지가 작동하지 않는 openfire, smack 및 android와 채팅 응용 프로그램을 사용하고 있습니다. 두 사용자가 모두 온라인 상태이면 메시지를 올바르게 보내고받을 수 있습니다. 그러나 사용자 A가 오프라인이고 사용자 B가 메시지를 보내는 경우 사용자 A는 온라인 상태가되면 B의 보낸 메시지를받지 못합니다. 가능한 해결책은 stackoverflow에서 가능하지만 작동하지는 않습니다. 아래 코드를 사용하여 오프라인 메시지를 검색하십시오.메아리로 오프라인 메시지가 나타나지 않습니다.
새로운 Thread() { 공공 무효 실행() {
XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
.setSocketFactory(SocketFactory.getDefault())
.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
.setServiceName("123.456.0.854")//service name
.setHost("123.456.0.854") // host name
.setPort(5222) //port
.setUsernameAndPassword("phone", "admin")
.setConnectTimeout(40000)
.setCompressionEnabled(false).build();
connection = new XMPPTCPConnection(config);
try {
connection.connect();
connection.login("phone", "admin");
Presence presence = new Presence(Presence.Type.available);
presence.setStatus("Available");
try {
connection.sendStanza(presence);
} catch (SmackException.NotConnectedException e) {
e.printStackTrace();
}
} catch (SmackException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (XMPPException e) {
e.printStackTrace();
}
OfflineMessageManager offlineMessageManager = new OfflineMessageManager(connection);
try {
System.out.println("Count is " +offlineMessageManager.getMessageCount());
} catch (SmackException.NoResponseException e) {
e.printStackTrace();
} catch (XMPPException.XMPPErrorException e) {
e.printStackTrace();
} catch (SmackException.NotConnectedException e) {
e.printStackTrace();
}
}
}.start();