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

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

ويجب إنشاء تسلسل للبيانات في 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 بالحالة الحالية للتطبيق.