Cómo implementar la API de Co-Doing

La API de Compartir en vivo de Google Meet se usa para sincronizar datos arbitrarios entre los participantes de la reunión. Pueden ser cualquier dato de los que dependa tu app.

Debes serializar los datos en un Uint8Array para que se transmitan. Para obtener más información, consulta la referencia de la biblioteca estándar de JavaScript.

Si no estás seguro de cómo serializar tus datos, consulta las siguientes muestras de código.

En esta guía, se explica cómo implementar la API de Co-Doing.

Crear un elemento CoDoingClient

Para comenzar, crea un CoDoingClient a partir del AddonSession que creaste en Comenzar.

Para crear un CoDoingClient, llama al método AddonSession.createCoDoingClient y proporciona un CoDoingDelegate.

El CoDoingDelegate es la manera en que la API de Co-Doing actualiza tu aplicación cuando tiene un nuevo estado disponible. Se espera que, cuando se llame al método CoDoingDelegate.onCoDoingStateChanged, tu aplicación aplique de inmediato el estado nuevo.

El siguiente ejemplo de código muestra cómo usar la API de Co-Doing:

TypeScript

interface MyState {
  someString: string;
  someNumber: number;
}

/**
 * Serialize/deserialize using JSON.stringify
 * You can use any method you want; this is included for as an example
 */
function toBytes(state: MyState): Uint8Array {
  return new TextEncoder().encode(JSON.stringify(state));
}

function fromBytes(bytes: Uint8Array): MyState {
  return JSON.parse(new TextDecoder().decode(bytes)) as MyState;
}

  const coDoingClient = await addonSession.createCoDoingClient({
    activityTitle: "ACTIVITY_TITLE",
    onCoDoingStateChanged(coDoingState: CoDoingState) {
      const newState = fromBytes(coDoingState.bytes);
      // This function should apply newState to your ongoing CoDoing activity
    },
  });

Reemplaza ACTIVITY_TITLE por el título de tu actividad.

Administra el estado actual

Cuando los usuarios realizan acciones en tu aplicación, se espera que esta llame de inmediato a CoDoingClient.broadcastStateUpdate.

En la siguiente muestra de código, se incluye una implementación de CoDoingClient.broadcastStateUpdate:

TypeScript

const myState: MyState = {
  someString: "SOME_STRING",
  someNumber: 0
};

document.getElementById('some-button').onClick(() => {
  myState.someNumber = myState.someNumber + 1;
  coDoingClient.broadcastStateUpdate({ bytes: toBytes(myState) });
});

Reemplaza SOME_STRING por el estado actual de la app.