Guía de desarrollo

Local Navigation

Enviar un mensaje a un contacto

Antes de comenzar: Complete la tarea Registrar su aplicación en la plataforma de BlackBerry Messenger. Compruebe que la clase que muestra la pantalla en los ejemplos de código siguientes pasa una referencia al objeto BBMPlatformContext asociado a la aplicación.
  1. Importe las clases y las interfaces necesarias.
    import net.rim.blackberry.api.bbm.platform.*;
    import net.rim.blackberry.api.bbm.platform.io.*;
    import net.rim.blackberry.api.bbm.platform.profile.*;
    import net.rim.blackberry.api.bbm.platform.service.*;
    import net.rim.device.api.ui.component.*;
  2. Cree una clase que amplíe MainScreen. En el constructor para esta clase Screen, pase el BBMPlatformContext asociado a la aplicación.
    public class MyBBMScreen extends MainScreen
    {
        public MyBBMScreen(BBMPlatformContext platformContext)
        {
        }
    }
  3. Declare una instancia de BBMPlatformChannel como una variable de miembro de la clase MyBBMScreen.
    public class MyBBMScreen extends MainScreen
    {
        BBMPlatformChannel _channel;
        public MyBBMScreen(BBMPlatformContext platformContext)
        {
        }
    }
  4. En el constructor MyBBMScreen, recupere una instancia del servicio de mensajería.
    public MyBBMScreen(BBMPlatformContext platformContext)
    {
        MessagingService myMessagingService = platformContext.getMessagingService();
    }
  5. Cree un canal que pase una instancia de un BBMPlatformChannelListener que haya definido en el paso 9.
    public MyBBMScreen(BBMPlatformContext platformContext)
    {
        MessagingService myMessagingService = platformContext.getMessagingService();
        _channel = messagingService.createChannel(_channelListener);
    }
  6. Invite a un contacto a su aplicación. En los parámetros para sendInvitation(), puede especificar un mensaje para que se entregue cuando el contacto reciba la invitación, un parámetro que pasará al método principal de la aplicación como args[1] y un tiempo de caducidad. El siguiente ejemplo de código pasa el valor 0 para el tiempo de caducidad (es decir, la invitación nunca caduca). Se abre un componente de la interfaz de usuario para seleccionar el contacto con el fin de que el usuario escoja un contacto al que invitar.
    public MyBBMScreen(BBMPlatformContext platformContext)
    {
        MessagingService messagingService = platformContext.getMessagingService();
        _channel = messagingService.createChannel(_channelListener);
        _channel.sendInvitation("Let's play a game", "Chess App", 0);
    }
  7. En la clase MyBBMScreen, defina un método Helper, onContactJoined(), al cual invoca el método de devolución de llamadas BBMPlatformChannelListener.contactJoined(). Pase una referencia al contacto que se acaba de unir.
    public class MyBBMScreen extends MainScreen
    {
        BBMPlatformChannel _channel;
        public MyBBMScreen(BBMPlatformContext platformContext)
        {
            //code from steps 5 to 7    
        }
        private onContactJoined(BBMPlatformContact contact)
        {
        }
    }
  8. En el método onContactJoined(), cree un mensaje, únalo a un objeto BBMPlatformData y, en un bloque try-catch, envíe el mensaje. En el ejemplo de código siguiente, el mensaje se envía a todos los contactos que se han unido al canal para informar de que un participante ha dejado el juego.
    private void onContactLeft(BBMPlatformContact contact)
    {
        String goodbyeMsg = contact.getDisplayName() + " has left the game.";
        BBMPlatformData data = new BBMPlatformData(goodbyeMsg);
        try {
            _channel.sendData(data, _channel.getContactList());
        }
        catch (BBMPlatformException e) 
        {
            // Error handler code
        }
    }
  9. En la clase MyBBMScreen, defina el servicio de escucha del canal, _channelListener, como una clase interna privada. En el método contactJoined(), invoque el método onContactJoined() pasando el BBMPlatformContact que se acaba de unir.
    public class MyBBMScreen extends MainScreen
    {
        public MyBBMScreen(BBMPlatformContext platformContext)
        {
            //code from steps 4 to 6
        }
        private void onContactJoined(BBMPlatformContact contact) 
        {
            //code from step 8
        }
        private BBMPlatformChannelListener _channelListener = new BBMPlatformChannelListener() 
        {
            public void contactsInvited(BBMPlatformConnection conn, BBMPlatformContactList 
                                         contactList) 
            {
            }
            public void contactsJoined(BBMPlatformConnection conn, BBMPlatformContactList
                                       contacts, String cookie, int type) 
            {
            }
            public void contactDeclined(BBMPlatformConnection conn, 
                                         BBMPlatformContact contact) 
            {
            }
            public void contactLeft(BBMPlatformConnection conn, BBMPlatformContact contact) 
            {
                onContactLeft(contact);
            }
            public void dataReceived(BBMPlatformConnection conn, BBMPlatformContact sender, 
                                      BBMPlatformData data) 
            {
            }
       			  }
        };
    }

¿Le ha resultado útil esta información? Envíenos sus comentarios.