本帖最后由 jayqean 于 2011-05-31 12:19:54 编辑

解决方案 »

  1.   

    offlineManager.getMessageCount()  打印出来是0
    想用gmail的邮箱测试,奈何公司的网络很差
    有哪位好心人帮我测试下就好,用两个gmail邮箱 在对方离线的时候发送条消息 在用下面的代码登录离线的那个帐号,测试有没有收到import java.util.Iterator;import org.jivesoftware.smack.ConnectionConfiguration;
    import org.jivesoftware.smack.XMPPConnection;
    import org.jivesoftware.smack.XMPPException;
    import org.jivesoftware.smack.packet.Presence;
    import org.jivesoftware.smackx.OfflineMessageManager;public class Test {

    public static XMPPConnection getConn() {
    ConnectionConfiguration conf = new ConnectionConfiguration("gmail.com",
    5222);
    conf.setSASLAuthenticationEnabled(false);// gtalk不支持SASL验证,设置为false
    conf.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
    conf.setCompressionEnabled(false);
    XMPPConnection conn = new XMPPConnection(conf);
    return conn;
    }

    public static void main(String[] args) {
    XMPPConnection conn = getConn();
    try {
    conn.connect();
    conn.login("username", "password");
    Presence presence = new Presence(Presence.Type.available);
    conn.sendPacket(presence);
    OfflineMessageManager offlineManager = new OfflineMessageManager(conn);
    System.out.println(offlineManager.getMessageCount());
    Iterator<org.jivesoftware.smack.packet.Message> it = offlineManager.getMessages();
    while(it.hasNext()){
    org.jivesoftware.smack.packet.Message message = it.next();
    System.out.println("收到离线消息, Received from 【" + message.getFrom() + "】 message: " + message.getBody());
    }
    } catch (XMPPException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }
    }
      

  2.   

    一回家就解决了,够折腾的,服务器对于离线消息是主动推送的,上线能监听到,我写的另一个测试列子是因为没有一段时间的停留,其实是收到了,来不急打印,Thread.sleep(100000);
    关于一楼的回复,确实无法用OfflineMessageManager这个类收到.