简体   繁体   中英

I am not able to receive offline messages in MessageListener method in smack android

When i enable setUseStreamManagementDefault or setUseStreamManagementResumptiodDefault then i am not able to receive offline messages in ChatManagerListener interface. if setUseStreamManagementDefault and setUseStreamManagementResumptiodDefault both are disabled then i am able to receive the offline messages but i cannot receive stanza acknowledgement in addStanzaAcknowledgedListener. I want to receive offline messages as well as stanza acknowledgement what should i do ?

I tried to use OfflineMessageManager but i cannot receive offline messages. I don't want to use OfflineMessageManager , is it possible without using OfflineMessageManager i can receive offline messages ?

AFAIK you have to use OfflineMessageManager. I did not find any other way.

OfflinemessageManager offlineMessageManager = new OfflineMessageManager(connection);
if (offlineMessageManager.supportsFlexibleRetrieval() && offlineMessageManager.getMessageCount() > 0) {

                List<String> messagesNodes = offlineMessageManager.getHeaders().stream()
                        .map(OfflineMessageHeader::getStamp)
                        .collect(Collectors.toList());
                offlineMessageManager.getMessages(messagesNodes)
                        .forEach(message -> {
                            System.out.println(String.format(offlineMessageOffline, message.getBody(), message.getFrom()));
                        });
                offlineMessageManager.deleteMessages();
            }

Also no need to do anything inside this code. Offline messages will automatically be listened in IncomingChatMessageListener

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM