会议参与者可以协同处理 Google Meet 插件活动。协作活动开始时, 会议中的所有参与者都会收到一条通知,告知该活动 持续进行中。
此通知会根据 插件:
如果参与者已安装此插件: 他们可以加入活动。
如果参与者未使用该插件 已安装:系统会指示他们安装 插件。
如果插件不适用于参与者的平台:系统会告知他们无法使用当前设备加入活动。
当用户加入 activity 时,他们会加载自己的 iframe 并添加您的插件内容。您可以自定义是否允许新加入者 应在主界面或侧边栏中打开协作活动。
启动 activity
通过调用
startActivity()
方法,该方法使用
ActivityStartingState
界面。
第 1 步(可选):插件设置 activity 启动状态
ActivityStartingState
其中包含有关对象初始状态的信息,
参与者接受相关邀请时使用的插件
邀请用户参加活动。
该插件可以在 activity 之前或期间的任何时间调用 setActivityStartingState()
方法来设置或更新 ActivityStartingState
。调用
如果 ActivityStartingState
为setActivityStartingState()
startActivity()
调用中专门设置。
第 2 步:插件启动 activity
当插件调用 MeetSidePanelClient
上的 startActivity()
方法时,该 activity 会开始。startActivity()
方法接受 ActivityStartingState
对象作为参数,因此可以调用 startActivity()
,而无需调用 setActivityStartingState()
。
在用户完成内容选择并准备好启动 activity 后,
在插件中调用 startActivity()
方法,如下所示:
如下:
sidePanelClient.startActivity({
mainStageUrl: "https://app.example.com/mainstage",
additionalData: JSON.stringify({
// State to send to participants.
})
});
调用 startActivity()
方法时,Meet 会执行以下操作:
对于其他参与者:Meet 会显示通知, 活动持续进行。
对于发起者:如果在
ActivityStartingState
中指定了主舞台网址,Meet 会使用ActivityStartingState
中的网址打开主舞台。
第 3 步:获取 activity 的启动状态
当用户加入 activity 时,他们会将您的插件加载到主舞台或侧边栏中,具体取决于 ActivityStartingState
。
借助 additionalData
属性,您可以与加入 activity 的用户共享初始数据(也称为状态)。初始化 MainStageClient
或 SidePanelClient
后,您可以调用 getActivityStartingState()
方法来检索 additionalData
属性。
const startingState = client.getActivityStartingState();
const additionalData = JSON.parse(startingState.additionalData);
第 4 步(可选):在 activity 中共享插件状态
您还可以在 activity 运行期间在用户之间共享状态。您可以通过以下两种方式共享状态:
- 您可以通过编写自己的同步后端来自己处理。
- 使用 Co-Doing API,以便在用户之间快速便捷地共享任意数据。
示例:GitHub 上的动画插件
GitHub 上的“Animation”示例插件包含插件协作功能。此示例不包含本指南中的第 1 步。相反,当
插件发起者点击
“启动动画”按钮
在侧边栏中,系统会调用 startActivity()
方法(第 2 步)
使用用户选择的颜色填充起始状态。在
启动 activity 时,主阶段会通过
调用 getActivityStartingState()
方法
(第 3 步)。此示例插件中的 activity 期间,参与者之间不会共享状态(所选颜色),因此省略了第 4 步。不过,个别用户可以通过选择颜色来更改自己的状态,系统会使用帧到帧消息传递将颜色从侧边栏帧发送到主舞台帧。
限制条件
ActivityStartingState
中指定的网址必须属于同一 将 origin 指定为 插件清单。如需了解详情,请参阅插件安全性。- 通过
sidePanelUrl
媒体资源mainStageUrl
属性,以及additionalData
属性字符长度必须符合各自的大小限制, SDK 参考文档中发布。