For more information on each stage please follow these links:
Use the static method MessageEventManager.addNotificationsRequests(Message message, boolean offline, boolean delivered, boolean displayed, boolean composing) for requesting event notifications.
// Connect to the server and log in conn1 = new XMPPConnection(host); conn1.login(server_user1, pass1); // Create a chat with user2 Chat chat1 = conn1.createChat(user2); // Create a message to send Message msg = chat1.createMessage(); msg.setSubject("Any subject you want"); msg.setBody("An interesting body comes here..."); // Add to the message all the notifications requests (offline, delivered, displayed, // composing) MessageEventManager.addNotificationsRequests(msg, true, true, true, true); // Send the message that contains the notifications request chat1.sendMessage(msg);
Note that DefaultMessageEventRequestListener is a default implementation of the MessageEventRequestListener interface. The class DefaultMessageEventRequestListener automatically sends a delivered notification to the sender of the message if the sender has requested to be notified when the message is delivered. If you decide to create a new class that implements the MessageEventRequestListener interface, please remember to send the delivered notification.
// Connect to the server and log in the users conn1 = new XMPPConnection(host); conn1.login(server_user1, pass1); conn2 = new XMPPConnection(host); conn2.login(server_user2, pass2); // User2 creates a MessageEventManager MessageEventManager messageEventManager = new MessageEventManager(conn2); // User2 adds the listener that will react to the event notifications requests messageEventManager.addMessageEventRequestListener(new DefaultMessageEventRequestListener() { public void deliveredNotificationRequested( String from, String packetID, MessageEventManager messageEventManager) { super.deliveredNotificationRequested(from, packetID, messageEventManager); // DefaultMessageEventRequestListener automatically responds that the message was delivered when receives this request System.out.println("Delivered Notification Requested (" + from + ", " + packetID + ")"); } public void displayedNotificationRequested( String from, String packetID, MessageEventManager messageEventManager) { super.displayedNotificationRequested(from, packetID, messageEventManager); // Send to the message's sender that the message was displayed messageEventManager.sendDisplayedNotification(from, packetID); } public void composingNotificationRequested( String from, String packetID, MessageEventManager messageEventManager) { super.composingNotificationRequested(from, packetID, messageEventManager); // Send to the message's sender that the message's receiver is composing a reply messageEventManager.sendComposingNotification(from, packetID); } public void offlineNotificationRequested( String from, String packetID, MessageEventManager messageEventManager) { super.offlineNotificationRequested(from, packetID, messageEventManager); // The XMPP server should take care of this request. Do nothing. System.out.println("Offline Notification Requested (" + from + ", " + packetID + ")"); } }); // User1 creates a chat with user2 Chat chat1 = conn1.createChat(user2); // User1 creates a message to send to user2 Message msg = chat1.createMessage(); msg.setSubject("Any subject you want"); msg.setBody("An interesting body comes here..."); // User1 adds to the message all the notifications requests (offline, delivered, displayed, // composing) MessageEventManager.addNotificationsRequests(msg, true, true, true, true); // User1 sends the message that contains the notifications request chat1.sendMessage(msg); Thread.sleep(500); // User2 sends to the message's sender that the message's receiver cancelled composing a reply messageEventManager.sendCancelledNotification(user1, msg.getPacketID());
// Connect to the server and log in conn1 = new XMPPConnection(host); conn1.login(server_user1, pass1); // Create a MessageEventManager MessageEventManager messageEventManager = new MessageEventManager(conn1); // Add the listener that will react to the event notifications messageEventManager.addMessageEventNotificationListener(new MessageEventNotificationListener() { public void deliveredNotification(String from, String packetID) { System.out.println("The message has been delivered (" + from + ", " + packetID + ")"); } public void displayedNotification(String from, String packetID) { System.out.println("The message has been displayed (" + from + ", " + packetID + ")"); } public void composingNotification(String from, String packetID) { System.out.println("The message's receiver is composing a reply (" + from + ", " + packetID + ")"); } public void offlineNotification(String from, String packetID) { System.out.println("The message's receiver is offline (" + from + ", " + packetID + ")"); } public void cancelledNotification(String from, String packetID) { System.out.println("The message's receiver cancelled composing a reply (" + from + ", " + packetID + ")"); } }); // Create a chat with user2 Chat chat1 = conn1.createChat(user2); // Create a message to send Message msg = chat1.createMessage(); msg.setSubject("Any subject you want"); msg.setBody("An interesting body comes here..."); // Add to the message all the notifications requests (offline, delivered, displayed, // composing) MessageEventManager.addNotificationsRequests(msg, true, true, true, true); // Send the message that contains the notifications request chat1.sendMessage(msg);