Cómo implementar la API de Co-Doing

La API de Co-Doing de Compartir en vivo de Google Meet se usa para sincronizar datos arbitrarios entre reuniones participantes. Estos pueden ser cualquier dato de los que dependa tu app.

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

Si no sabes cómo serializar tus datos, revisa las siguientes muestras de código.

Esta guía explica cómo implementar la API de Co-Doing.

Cómo crear un CoDoingClient

Para comenzar, crea CoDoingClient desde la AddonSession que creaste en Comenzar.

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

El CoDoingDelegate es cómo la API de Co-Doing y actualiza tu aplicación cuando tenga un nuevo estado disponible. Está previsto que, cuando CoDoingDelegate.onCoDoingStateChanged método nuevo, tu aplicación aplica de inmediato el estado nuevo.

En la siguiente muestra de código, se ve 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.

Administrar el estado actual

Cuando los usuarios realizan acciones en tu aplicación, se espera que esta llama inmediatamente CoDoingClient.broadcastStateUpdate

En la siguiente muestra de código, se presenta una implementación del 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.