הטמעת ה-Co-Doing API

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

כדי שהנתונים יועברו, צריך לסדר אותם בסדרת 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 מעדכן את האפליקציה בכל פעם שיש מצב חדש זמין. סביר להניח שכאשר מפעילים את ה-method 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 במצב הנוכחי של האפליקציה.