Implémenter l'API Co-Doing

L'API Co-Doing permet de synchroniser des données arbitraires entre les participants à une réunion. Il peut s'agir de toutes les données dont votre application dépend.

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

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

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

Commencer

Pour utiliser l'API Co-Doing, vous devez d'abord déployer un module complémentaire Meet. Une fois ces étapes terminées, vous pouvez commencer à utiliser l'API Co-Doing depuis votre nouveau module complémentaire.

Pour utiliser l'API Co-Doing, commencez par obtenir un objet AddonSession, qui sert de point d'entrée pour les activités de groupe Google Meet:

TypeScript

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

Remplacez CLOUD_PROJECT_NUMBER par le numéro de projet de votre projet Google Cloud.

Créer un client de co-création

Pour commencer, créez un objet CoDoingClient à partir de votre AddonSession.

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

CoDoingDelegate permet à l'API Co-Doing de mettre à jour votre application chaque fois qu'un nouvel état est disponible. Lorsque la méthode onCoDoingStateChanged() est appelée, votre application doit appliquer 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 the new state 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 appeler immédiatement la méthode broadcastStateUpdate().

L'exemple de code suivant illustre une implémentation de la méthode 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.