Co-Doing API を実装する

Google Meet Live Sharing Co-Doing API は、会議の参加者間で任意のデータを同期するために使用されます。これには、アプリが依存するすべてのデータが含まれます。

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

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

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

CoDoingClient を作成する

まず、スタートガイドで作成した AddonSession から CoDoingClient を作成します。

CoDoingClient を作成するには、AddonSession.createCoDoingClient メソッドを呼び出して、CoDoingDelegate を指定します。

CoDoingDelegate は、新しい状態が利用可能になったときに Co-Doing API がアプリケーションを更新する方法です。CoDoingDelegate.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 newState to your ongoing CoDoing activity
    },
  });

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

現在の状態を管理する

ユーザーがアプリ内でアクションを実行する場合、アプリは直ちに CoDoingClient.broadcastStateUpdate を呼び出すことが想定されています。

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

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