Implémenter l'API Co-Doing

L'API de partage en direct de Google Meet permet de synchroniser des données arbitraires entre les participants à la réunion. Il peut s'agir de toutes les données dont dépend votre application.

Vous devez sérialiser les données jusqu'à un Uint8Array pour qu'elles soient transmises. Pour en savoir plus, consultez la documentation de référence sur la bibliothèque standard JavaScript.

Si vous ne savez pas comment sérialiser vos données, consultez les exemples de code ci-dessous.

Ce guide explique comment implémenter l'API Co-Doing.

Créer un objet CoDoingClient

Pour commencer, créez un CoDoingClient à partir du AddonSession que vous avez créé à la section Premiers pas.

Pour créer un CoDoingClient, appelez la méthode AddonSession.createCoDoingClient et fournissez un CoDoingDelegate.

Le CoDoingDelegate permet à l'API Co-Doing de mettre à jour votre application chaque fois qu'un nouvel état est disponible. Lorsque la méthode CoDoingDelegate.onCoDoingStateChanged est appelée, il est normal que votre application applique immédiatement le nouvel état.

L'exemple de code suivant montre comment utiliser l'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 newState to your ongoing CoDoing activity
    },
  });

Remplacez ACTIVITY_TITLE par le titre de votre activité.

Gérer l'état actuel

Lorsque les utilisateurs effectuent une action dans votre application, celle-ci doit immédiatement appeler CoDoingClient.broadcastStateUpdate.

L'exemple de code suivant montre une implémentation 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) });
});

Remplacez SOME_STRING par l'état actuel de l'application.