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