Co-Doing API implementieren

Mit der Google Meet Live Sharing Co-Doing API können beliebige Daten zwischen Teilnehmern synchronisiert werden. Das können beliebige Daten sein, von denen deine App abhängig ist.

Sie müssen die Daten bis zu einer Uint8Array serialisieren, damit sie übertragen werden können. Weitere Informationen finden Sie in der Referenz zur JavaScript-Standardbibliothek.

Wenn Sie sich nicht sicher sind, wie Sie Ihre Daten partitionieren, sehen Sie sich die folgenden Codebeispiele an.

In diesem Leitfaden wird die Implementierung der Co-Doing API erläutert.

CoDoingClient erstellen

Erstellen Sie dafür zuerst einen CoDoingClient aus dem AddonSession, den Sie unter Jetzt starten erstellt haben.

Rufen Sie zum Erstellen eines CoDoingClient die Methode AddonSession.createCoDoingClient auf und geben Sie einen CoDoingDelegate an.

Mit der CoDoingDelegate wird Ihre Anwendung von der Co-Doing API aktualisiert, sobald ein neuer Status verfügbar ist. Es wird erwartet, dass Ihre Anwendung beim Aufruf der Methode CoDoingDelegate.onCoDoingStateChanged sofort den neuen Status anwendet.

Das folgende Codebeispiel zeigt, wie die Co-Doing API verwendet wird:

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
    },
  });

Ersetzen Sie ACTIVITY_TITLE durch den Titel Ihrer Aktivität.

Aktuellen Status verwalten

Wenn Nutzer Aktionen in Ihrer Anwendung ausführen, wird erwartet, dass diese sofort CoDoingClient.broadcastStateUpdate aufruft.

Das folgende Codebeispiel zeigt eine Implementierung von 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) });
});

Ersetzen Sie SOME_STRING durch den aktuellen Status der Anwendung.