android - Retrieving offline messages using asmack -


i'm new asmack , openfire, looked lot working answer couldn't find anywhere. how retrieve offline messages on logging account on asmack?

i've used following code:

      configure(providermanager.getinstance()); //configuring providers before creating connection              connectionconfiguration connconfig =  new connectionconfiguration(host, port);              connconfig.setsendpresence(false);        connection =  new  xmppconnection (connconfig);         try {        connection.connect();        } catch (xmppexception ex) {           setconnection(null);      }       try {           connection.login(username, password);           try {                    offlinemessagemanager offlinemanager = new offlinemessagemanager(                      connection);             iterator<org.jivesoftware.smack.packet.message> = offlinemanager                      .getmessages();              system.out.println(offlinemanager.supportsflexibleretrieval());              system.out.println("number of offline messages:: " + offlinemanager.getmessagecount());              map<string,arraylist<message>> offlinemsgs = new hashmap<string,arraylist<message>>();                while (it.hasnext()) {                  org.jivesoftware.smack.packet.message message = it.next();                  system.out                          .println("receive offline messages, received [" + message.getfrom()                                  + "] message:" + message.getbody());                  string fromuser = message.getfrom().split("/")[0];                   if(offlinemsgs.containskey(fromuser))                  {                      offlinemsgs.get(fromuser).add(message);                  }else{                      arraylist<message> temp = new arraylist<message>();                      temp.add(message);                      offlinemsgs.put(fromuser, temp);                  }              }              // deal collection of offline messages ...               offlinemanager.deletemessages();          } catch (exception e) {                    log.e("catch","offline");             e.printstacktrace();          }          presence presence = new presence(presence.type.available);          connection.sendpacket(presence);         setconnection(connection);//packet listener               // set status available              } catch (xmppexception ex) {              setconnection(null);           } 

from i've read, once connection established, openfire automatically sends offline messages user. (if any) means setting packet listeners after logging in, should able retrieve messages. however, didn't work me. which's why tried using offlinemessagemanager. shows 0 messages message count though. logged in mysql db server's using , checked offline messages folder. messages exist till user logs in, means messages being sent isn't being retrieved app. can't seem find out how implement this. if has working solution, it'd appreciated.

i partially solved added packet listener after login same problem persist when internet go down. in case intercept reconnectionsuccessful event , remove , add again packet listener messages sent when user offline lost .

somebody have best solution solve it?


Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -