Участники встречи могут совместно работать в дополнении Google Meet. Когда начинается совместное занятие, все участники встречи получают уведомление о том, что занятие продолжается.
Уведомление зависит от доступности и статуса установки дополнения:
Если у участника установлено дополнение, он может присоединиться к сеансу работы с дополнением.
Если у участника не установлено дополнение, ему будет предложено его установить.
Если дополнение недоступно для платформы участника, он получит уведомление о том, что не может присоединиться к занятию на текущем устройстве.
Когда пользователь присоединяется к занятию, он загружает собственные фреймы iframe с контентом вашего дополнения. Вы можете настроить, где новые участники будут видеть совместное действие: на основном экране или на боковой панели.
Начать
Объект activity запускается путем вызова метода startActivity(), который использует интерфейс ActivityStartingState.
Шаг 1 (необязательно). Дополнение задает начальное состояние занятия
ActivityStartingState содержит информацию о начальном состоянии дополнения, которая используется, когда участник принимает приглашение присоединиться к занятию.
Дополнение может задать или обновить ActivityStartingState, вызвав метод setActivityStartingState() в любое время до или во время занятия. Вызовы setActivityStartingState() можно опустить, если ActivityStartingState задается только в вызове startActivity().
Шаг 2. Дополнение запускает активность
Сеанс начинается, когда дополнение вызывает метод startActivity() в MeetSidePanelClient.
Метод startActivity() принимает объект ActivityStartingState в качестве параметра, поэтому вместо setActivityStartingState() можно вызвать startActivity().
Когда пользователь выберет контент и будет готов начать занятие, вызовите метод startActivity() в дополнении, как показано ниже.
sidePanelClient.startActivity({
mainStageUrl: "https://app.example.com/mainstage",
additionalData: JSON.stringify({
// State to send to participants.
})
});
При вызове метода startActivity() Meet выполняет следующие действия:
Для других участников. Meet показывает уведомление о том, что сеанс продолжается.
Для инициатора. Если в
ActivityStartingStateбыл указан URL главного экрана, Meet откроет главный экран, используя URL изActivityStartingState.
Шаг 3. Получите начальное состояние действия
Когда пользователь присоединяется к занятию, он загружает ваше дополнение в основную область или на боковую панель в зависимости от ActivityStartingState.
С помощью свойства additionalData вы можете делиться начальными данными (также называемыми состоянием) с пользователями, присоединяющимися к занятию. После инициализации MainStageClient или SidePanelClient вы можете вызвать метод getActivityStartingState(), чтобы получить свойство additionalData.
const startingState = client.getActivityStartingState();
const additionalData = JSON.parse(startingState.additionalData);
Шаг 4 (необязательно). Поделитесь состоянием дополнения в занятии
Вы также можете делиться состоянием между пользователями во время активности, создав собственный сервер синхронизации.
Пример: дополнение Animation на GitHub
Пример дополнения Animation на GitHub включает совместную работу в дополнении. Шаг 1 из этого руководства не включен в пример. Вместо этого, когда инициатор дополнения нажимает кнопку "Запустить анимацию" на боковой панели, вызывается метод startActivity() (шаг 2), который заполняет начальное состояние выбранным пользователем цветом. После запуска активности основная сцена получает начальное состояние, вызывая метод getActivityStartingState() (шаг 3). Шаг 4 опущен, поскольку в этом примере дополнения состояние (выбранный цвет) не передается между участниками во время занятия. Однако отдельные пользователи могут изменить свое состояние, выбрав цвет, который отправляется из фрейма боковой панели во фрейм основной сцены с помощью обмена сообщениями между фреймами.
Ограничения
- URL, указанные в
ActivityStartingState, должны принадлежать тому же источнику, что и источники, указанные в манифесте дополнения. Подробнее о безопасности дополнений… - Длина свойств
sidePanelUrl,mainStageUrlиadditionalDataне должна превышать ограничений, указанных в справочной документации по SDK.