Triển khai API Co-Doing

API cùng thực hiện Chia sẻ trực tiếp của Google Meet được dùng để đồng bộ hoá dữ liệu tuỳ ý giữa những người tham gia cuộc họp. Đây có thể là bất kỳ dữ liệu nào mà ứng dụng của bạn phụ thuộc.

Bạn phải chuyển đổi tuần tự dữ liệu xuống Uint8Array để truyền dữ liệu. Để biết thêm thông tin, hãy xem Tài liệu tham khảo về thư viện chuẩn JavaScript.

Nếu bạn không chắc chắn cách chuyển đổi tuần tự dữ liệu, hãy xem các mã mẫu dưới đây.

Hướng dẫn này giải thích cách triển khai API cùng làm.

Tạo một CoDoingClient

Để bắt đầu, hãy tạo một CoDoingClient từ AddonSession mà bạn đã tạo trong phần Bắt đầu.

Để tạo một CoDoingClient, hãy gọi phương thức AddonSession.createCoDoingClient và cung cấp một CoDoingDelegate.

CoDoingDelegate là cách API Co-Doing cập nhật ứng dụng của bạn bất cứ khi nào ứng dụng có trạng thái mới. Dự kiến khi phương thức CoDoingDelegate.onCoDoingStateChanged được gọi, ứng dụng của bạn sẽ ngay lập tức áp dụng trạng thái mới.

Mã mẫu sau đây cho biết cách sử dụng API cùng làm:

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

Thay thế ACTIVITY_TITLE bằng tiêu đề của hoạt động.

Quản lý trạng thái hiện tại

Khi người dùng thực hiện thao tác trong ứng dụng, ứng dụng cần gọi CoDoingClient.broadcastStateUpdate ngay lập tức.

Mã mẫu sau đây cho thấy cách triển khai 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) });
});

Thay thế SOME_STRING bằng trạng thái hiện tại của ứng dụng.