Notificaciones — Android

Utiliza la API de señalización de OpenTok para enviar texto y datos entre los clientes conectados a una sesión de OpenTok.

Para obtener información conceptual sobre la API de señalización de OpenTok, consulta el Resumen sobre la señalización guía del desarrollador.

Este tema incluye las siguientes secciones:

Enviar una señal a un cliente concreto en una sesión

Para enviar una señal a un cliente concreto en una sesión, llama a la función sendSignal(String type, String data, Connection connection) del objeto Session:

mSession.sendSignal("chat", "Hello", mConnection1);

El type El parámetro es un valor de cadena que los clientes pueden utilizar para filtrar cuando estar atento a las señales. Establece este valor en una cadena vacía si no necesitas especificar un tipo.

El data El parámetro es la carga útil de datos (una cadena) que se envía junto con el mensaje. El límite de tamaño de los datos es de 8 KB.

El connection es un parámetro Conexión objeto correspondiente a un cliente conectado a la sesión a la que deseas enviar la señal. Las referencias a los objetos Connection se obtienen en el onConnectionCreated(Session session, Connection connection) método del objeto `Session.ConnectionListener` implementado para la sesión.

Ten en cuenta que puedes utilizar un Llamada a la API REST para enviar una señal desde tu servidor, en lugar de desde un cliente conectado a la sesión. En este caso, el connection se establece en null.

Envío de una señal a todos los clientes de una sesión

Para enviar una señal a todos los clientes de una sesión, llama a la función sendSignal(String type, String data) del objeto Session:

mSession.sendSignal("chat", "Hello");

El type El parámetro es un valor de cadena que los clientes pueden utilizar para filtrar cuando estar atento a las señales. Establece este valor en una cadena vacía si no necesitas especificar un tipo.

El data El parámetro es la carga útil de datos (una cadena) que se envía junto con el mensaje. El límite de tamaño de los datos es de 8 KB.

Recepción de señales en una sesión

Para empezar a recibir todas las señales, llama al setSignalListener(Session.SignalListener listener) método del objeto `Session`, pasando un objeto que implemente la interfaz `Session.SignalListener`:

 mSession.setSignalListener(this);

El onSignalReceived(Session session, String type, String data, Connection connection) El método del objeto SignalListener se invoca cuando se recibe una señal en la sesión:

@Override
protected void onSignalReceived(Session session, String type, String data, Connection connection) {
    String myConnectionId = session.getConnection().getConnectionId();
    if (connection != null && connection.getConnectionId().equals(myConnectionId)) {
        // Signal received from another client
    }
}

Ten en cuenta que puedes utilizar un Llamada a la API REST para enviar una señal desde tu servidor, en lugar de desde un cliente conectado a la sesión. En este caso, el connection se establece en null.

Evitar que se envíen señales durante la reconexión automática

Los clientes intentarán volver a conectarse automáticamente a una sesión de la que se hayan desconectado de forma inesperada (por ejemplo, debido a una interrupción de la conexión de red). De forma predeterminada, cualquier señal que envíes mientras el cliente esté temporalmente desconectado de una sesión se pone en cola y se envía cuando (y si) se vuelve a conectar con éxito. Puedes utilizar la Session.sendSignal(String type, String data, Connection connection, boolean retryAfterReconnect) y establecer el método retryAfterReconnect parámetro a false para evitar que las señales se acumulen en la cola mientras el cliente está desconectado. Para obtener más información, consulta Reconexión automática.