הטמעת ה-Co-Doing API

משתמשים ב-Co-Doing API כדי לסנכרן נתונים שרירותיים בין משתתפים בפגישה. יכולים להיות אלה נתונים שהאפליקציה תלויה בהם.

כדי שהנתונים יועברו, צריך לבצע סריאליזציה שלהם ל-Uint8Array. מידע נוסף זמין במאמר הפניה לספריית התקנים של JavaScript.

אם אתם לא בטוחים איך לבצע סריאליזציה של הנתונים, כדאי לעיין בדוגמאות הקוד שבהמשך.

במדריך הזה מוסבר איך מטמיעים את Co-Doing API.

שנתחיל?

כדי להשתמש ב-Co-Doing API, קודם צריך לפרוס תוסף ל-Meet. אחרי שתסיימו את השלבים האלה, תוכלו להתחיל להשתמש ב-Co-Doing API מתוך התוסף החדש.

כדי להשתמש ב-Co-Doing API, מתחילים בקבלת אובייקט AddonSession, שמשמש כנקודת הכניסה לפעילויות משותפות ב-Google Meet:

TypeScript

const session = await window.meet.addon.createAddonSession({
    cloudProjectNumber: "CLOUD_PROJECT_NUMBER",
});

מחליפים את CLOUD_PROJECT_NUMBER במספר הפרויקט ב-Google Cloud.

יצירת לקוח שמשתף פעולה

כדי להתחיל, יוצרים אובייקט CoDoingClient מ-AddonSession.

כדי ליצור CoDoingClient, צריך לבצע קריאה ל-method‏ createCoDoingClient() ולספק אובייקט CoDoingDelegate.

CoDoingDelegate הוא האופן שבו Co-Doing API מעדכן את האפליקציה בכל פעם שיש מצב חדש זמין. כשקוראים לשיטה 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 the new state to your ongoing CoDoing activity
    },
  });

מחליפים את ACTIVITY_TITLE בכותרת הפעילות.

ניהול המצב הנוכחי

כשמשתמשים מבצעים פעולה באפליקציה, מצופה שהאפליקציה תפעיל באופן מיידי את השיטה broadcastStateUpdate().

בדוגמה הבאה מוצג קוד להטמעה של השיטה 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 במצב הנוכחי של האפליקציה.