Co-Doing API を実装する

Co-Doing API は、会議の参加者間で任意のデータを同期するために使用されます。アプリが依存するデータであれば、どのようなデータでもかまいません。

データを送信するには、データを Uint8Array にシリアル化する必要があります。詳細については、JavaScript 標準ライブラリのリファレンスをご覧ください。

データのシリアル化方法がわからない場合は、次のコードサンプルをご覧ください。

このガイドでは、Co-Doing API を実装する方法について説明します。

使ってみる

Co-Doing API を使用するには、まず Meet アドオンをデプロイする必要があります。これらの手順が完了したら、新しいアドオン内から Co-Doing API の使用を開始できます。

Co-Doing API を使用するには、まず AddonSession オブジェクトを取得します。これは、Google Meet の共同アクティビティのエントリ ポイントとして機能します。

TypeScript

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

CLOUD_PROJECT_NUMBER は、Google Cloud プロジェクトのプロジェクト番号に置き換えます。

共同作業クライアントを作成する

まず、AddonSession から CoDoingClient オブジェクトを作成します。

CoDoingClient を作成するには、createCoDoingClient() メソッドを呼び出して CoDoingDelegate オブジェクトを指定します。

CoDoingDelegate は、新しい状態が利用可能になったときに Co-Doing API がアプリを更新する方法です。onCoDoingStateChanged() メソッドが呼び出されると、アプリは新しい状態をすぐに適用することが想定されています。

次のコードサンプルは、Co-Doing API の使用方法を示しています。

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
    },
  });

ACTIVITY_TITLE は、アクティビティのタイトルに置き換えます。

現在の状態を管理する

ユーザーがアプリでアクションを実行すると、アプリはすぐに broadcastStateUpdate() メソッドを呼び出すことが期待されます。

次のコードサンプルは、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) });
});

SOME_STRING は、アプリの現在の状態に置き換えます。