Implementar a API Co-Doing

A API Co-Doing é usada para sincronizar dados arbitrários entre os participantes da reunião. Esses podem ser dados de que seu app depende.

Você precisa serializar os dados em um Uint8Array para que eles sejam transmitidos. Para mais informações, consulte a referência da biblioteca padrão do JavaScript.

Se você não souber como serializar seus dados, revise os exemplos de código a seguir.

Este guia explica como implementar a API Co-Doing.

Primeiros passos

Para usar a API Co-Doing, primeiro implante um complemento do Meet. Depois de concluir essas etapas, você poderá começar a usar a API Co-Doing no novo complemento.

Para usar a API Co-Doing, comece recebendo um AddonSession objeto, que serve como ponto de entrada para as co-atividades do Google Meet:

TypeScript

const session = await window.meet.addon.createAddonSession({
    cloudProjectNumber: "CLOUD_PROJECT_NUMBER",
});

Substitua CLOUD_PROJECT_NUMBER pelo número do projeto na nuvem do Google Cloud.

Criar um cliente de co-doing

Para começar, crie um CoDoingClient objeto na sua AddonSession.

Para criar um CoDoingClient, chame o createCoDoingClient() método e forneça um CoDoingDelegate objeto.

O CoDoingDelegate é como a API Co-Doing atualiza seu app sempre que tem um novo estado disponível. É esperado que, quando o onCoDoingStateChanged() método for chamado, seu app aplique imediatamente o novo estado.

O exemplo de código a seguir mostra como usar a API 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 the new state to your ongoing CoDoing activity
    },
  });

Substitua ACTIVITY_TITLE pelo título da sua atividade.

Gerenciar o estado atual

Quando os usuários agem no seu app, é esperado que ele chame imediatamente o broadcastStateUpdate() método.

O exemplo de código a seguir mostra uma implementação do método 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) });
});

Substitua SOME_STRING pelo estado atual do app.