Skip to content

Receiving Unfiltered Messages

Backendless Real-Time Messaging delivers messages to listeners added to a channel. A listener is a callback function which is invoked by Backendless to deliver a message to the client application. Depending on the API used to add a listener, it can receive either all messages published into the channel or a filtered subset of messages. The filtering options are explained in greater detail in the Receiving Filtered Messages section of this guide.

Receiving String Messages

Adding a listener to receive messages as string objects. Messages should be published as string objects):

Channel channel = Backendless.Messaging.subscribe( "MyChannel" );
channel.addMessageListener( new AsyncCallback<String>()
{
  @Override
  public void handleResponse( String stringMessage )
  {
     Log.i( "MYAPP", "Received string message " + stringMessage );
  }

  @Override
  public void handleFault( BackendlessFault fault )
  {
     Log.e( "MYAPP", "Error processing a message " + fault );
  }
} );

Receiving Dictionary/Map messages

Adding a listener to receive messages as dictionary/map objects. Messages can be published as JSON objects, complex types or disctionary/map objects:

Channel channel = Backendless.Messaging.subscribe( "MyChannel" );
channel.addMessageListener( new AsyncCallback<HashMap>()
{
  @Override
  public void handleResponse( HashMap message )
  {
    Log.i( "received message as a hashmap " + message );
  }

  @Override
  public void handleFault( BackendlessFault fault )
  {
    Log.e( "Error processing a message " + fault );
  }
}, HashMap.class );

Receiving custom type/class messages

Adding a listener to receive messages as instances of a custom type (the Person class). Published messages must be instances of the class, map/dictionary objects or JSON objects with the same structure as the class:

Channel channel = Backendless.Messaging.subscribe( "MyChannel" );
channel.addMessageListener( new AsyncCallback<Person>()
{
  @Override
  public void handleResponse( Person personObject )
  {
    Log.i( "received message as a custom class " + personObject );
  }

  @Override
  public void handleFault( BackendlessFault fault )
  {
    Log.e( "Error processing a message " + fault );
  }
}, Person.class );

General signature

A general signature for receiving messages as instances of a custom type:

// channel object must be obtained via a subscription call, for example:
// Channel channel = Backendless.Messaging.subscribe( "MyChannel" );
channel.addMessageListener( AsyncCallback<T>, Class<T> callback );

Receiving messages in Backendless internal format

Adding a listener to receive message in the Backendless internal format:

Channel channel = Backendless.Messaging.subscribe( "MyChannel" );
channel.addMessageListener( new MessageInfoCallback()
{
  @Override
  public void handleResponse( PublishMessageInfo message )
  {
    Log.i( "MYAPP", "Published message - " + message.getMessage() );
    Log.i( "MYAPP", "Publisher ID - " + message.getPublisherId() );
    Log.i( "MYAPP", "Message headers - " + message.getHeaders() );
    Log.i( "MYAPP", "Message subtopic " + message.getSubtopic() );
  }

  @Override
  public void handleFault( BackendlessFault fault )
  {
    Log.e( "MYAPP", "Error processing a message " + fault );
  }
} );