Mengimplementasikan Co-Doing API

Google Meet Live Sharing Co-Doing API digunakan untuk menyinkronkan data arbitrer di antara peserta rapat. Data ini dapat berupa data apa pun yang menjadi dependensi aplikasi Anda.

Anda harus melakukan serialisasi data ke Uint8Array agar data tersebut dapat dikirimkan. Untuk mengetahui informasi selengkapnya, lihat referensi library standar JavaScript.

Jika Anda tidak yakin mengenai cara membuat serialisasi data, tinjau contoh kode di bawah.

Panduan ini menjelaskan cara menerapkan Co-Doing API.

Membuat CoDoingClient

Untuk memulai, buat CoDoingClient dari AddonSession yang Anda buat di Memulai.

Untuk membuat CoDoingClient, panggil metode AddonSession.createCoDoingClient dan berikan CoDoingDelegate.

CoDoingDelegate adalah cara Co-Doing API mengupdate aplikasi Anda setiap kali aplikasi memiliki status baru. Diharapkan bahwa, saat metode CoDoingDelegate.onCoDoingStateChanged dipanggil, aplikasi Anda akan segera menerapkan status baru.

Contoh kode berikut menunjukkan cara menggunakan 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
    },
  });

Ganti ACTIVITY_TITLE dengan judul aktivitas Anda.

Kelola status saat ini

Saat pengguna melakukan tindakan dalam aplikasi, aplikasi Anda diharapkan segera memanggil CoDoingClient.broadcastStateUpdate.

Contoh kode berikut menunjukkan implementasi 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) });
});

Ganti SOME_STRING dengan status aplikasi saat ini.