تنفيذ واجهة برمجة التطبيقات Co-Doing API

يتم استخدام واجهة برمجة التطبيقات Co-Doing API في Google Meet لمزامنة البيانات العشوائية بين المشاركين في الاجتماع. وقد تكون هذه أي بيانات يعتمد عليها تطبيقك.

يجب إدخال البيانات على شكل تسلسل إلى Uint8Array ليتم نقلها. لمزيد من المعلومات، يُرجى الاطّلاع على مرجع مكتبة JavaScript العادية.

إذا لم تكن متأكدًا من كيفية إنشاء تسلسل لبياناتك، فراجع نماذج التعليمات البرمجية أدناه.

يوضّح هذا الدليل كيفية تنفيذ Co-Doing API.

إنشاء CoDoingClient

للبدء، أنشئ CoDoingClient من AddonSession التي أنشأتها في البدء.

لإنشاء 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" بحالته الحالية.