如何生成 Cloudflare API 令牌?
要使用 RealtimeKit API,您必须拥有 Cloudflare 账户 ↗。
请遵循创建 API 令牌指南,通过 Cloudflare 仪表板 ↗创建一个新令牌。 在配置权限时,请确保选择 Realtime / Realtime Admin 权限。 根据您的使用场景需要,配置任何其他访问策略和限制。
我可以使用 RealtimeKit 提前安排会议吗?
虽然 RealtimeKit 不包含内置的日程安排系统,但您可以在其之上在您的应用程序中实现日程安排体验。 RealtimeKit 会议没有开始或结束时间,因此您的后端必须存储日程表并强制规定允许用户加入的时间。 常见的方法是:
- 当用户安排会议时,您的后端会在 RealtimeKit 中创建一个会议,并将会议
id与开始及结束时间一起存储。 - 当用户尝试在您的应用程序中加入会议时,您的后端会检查当前时间是否在允许的时间窗口内。
- 如果检查通过,您的后端将向会议添加参与者,将参与者身份验证令牌返回给前端,前端将该令牌传递给 RealtimeKit SDK,以便用户可以加入。
如何阻止参与者在特定日期或时间之后加入会议?
您可以在需要的时间通过向更新会议端点发送 PATCH 请求,将其状态设置为 INACTIVE 来停用该会议。
这可以防止参与者加入会议,并防止启动任何新的会话(Session)。
curl https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/realtime/kit/{APP_ID}/meetings/{MEETING_ID} \
--request PATCH \
--header "Authorization: Bearer <CLOUDFLARE_API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{ "status": "INACTIVE" }'如何为参与者生成身份验证令牌?
您的后端通过使用添加参与者 API 端点将用户作为参与者添加到会议中来生成身份验证令牌。API 响应中包含一个 token 字段,即该参与者在该会议中的身份验证令牌。如果在先前的令牌过期后您需要为现有参与者获取新令牌,请使用刷新参与者令牌端点。有关更多详细信息,请参阅参与者令牌。
同一用户可以从多个设备或浏览器标签页加入吗?
可以。如果用户从不同的设备或标签页加入同一个会议,单个参与者可以由多个同行(peer)表示。每个连接都会成为一个独立的同行,但它们都会映射回同一个参与者。
如何阻止用户再次加入会议?
使用删除参与者 API 端点删除该用户在会议中的参与者身份。一旦删除了参与者并且您停止为他们发放新令牌,他们将无法再加入该会议。
同一参与者可以加入同一个会议的多个会话吗?
可以。只要该参与者在会议中存在且拥有有效的身份验证令牌,随着时间的推移,该参与者就可以加入同一个会议的多个实时会话。
我需要为每个会话创建一个新的参与者吗?
在大多数情况下不需要。您通常为给定的用户和会议创建一次参与者,然后在该会议的各个会话中重复使用该参与者。随着时间的推移,您可能需要刷新参与者的身份验证令牌,但不需要重新创建参与者。
custom_participant_id 应该使用什么值?
请使用您自己系统中稳定的内部标识符,例如数字用户 id 或 UUID。请勿使用电子邮件地址、电话号码或其他个人身份信息等个人数据。
我该如何决定选择哪个 SDK?
RealtimeKit 支持适用于 Web 和移动平台的所有流行框架。
我们建议在大多数使用场景中使用我们的 UI Kit。
请注意:当您使用我们的 UI Kit 时,您也会同时获得 Core SDK,该 SDK 可用于根据您的需求构建其他功能。
欲了解更多信息,请参阅我们的 SDK 选择指南
如何将终端用户的摄像头质量设置为 1080p?
初始化 RealtimeKit 时,您可以设置摄像头质量的媒体配置。
有关更多详细信息,请参阅此处的媒体配置。
更高的摄像头质量会增加带宽使用量,并且如果终端用户的设备不够强大,无法处理来自多个同行的 1080p 画面,可能会影响低端设备上的会议性能。
如何为终端用户的摄像头源设置自定义帧率?
初始化 RealtimeKit 时,您可以设置摄像头的媒体配置。
有关更多详细信息,请参阅此处的媒体配置。
更高的视频帧率会增加带宽使用量,并且如果终端用户的设备存在带宽问题,可能会影响会议中其他同行的视频源质量。在群组通话中,请将视频帧率设置为较低的值(例如 <= 30)。当前默认是基于联播(simulcast)层的 24/30 FPS。
为什么插入麦克风时没有自动选择?
RealtimeKit SDK 尝试通过自动选择麦克风来提供最佳体验。它首选蓝牙设备而非有线设备。然而,如果设备在加入 RealtimeKit 会议之前就已经插入,并且设备的标签中没有包含 bluetooth、headset 或 earphone,则可能会被遗漏。
我们支持自动选择标签为 bluetooth、headset、earphone 或 microphone 的麦克风,以及标签包含 usb 和 wired 等的 USB 设备。还支持一些常用设备,例如 AirPods 或 Airdopes。我们不会自动选择虚拟设备。
如果自动选择失败,终端用户可以从会议中的“设置”按钮手动选择麦克风,并且 SDK 将记住该选择以供将来的会话使用。如果您拥有一款您认为常用的设备,请联系支持团队以请求为其提供第一手自动选择支持。
如何为屏幕共享设置自定义帧率?
初始化 RealtimeKit 时,您可以设置屏幕共享的媒体配置。
有关更多详细信息,请参阅此处的媒体配置。
更高的屏幕共享帧率会增加带宽使用量,并且如果终端用户的设备存在带宽问题,可能会影响会议中其他同行的视频源质量。在群组通话中,请将屏幕共享帧率设置为较低的值(例如 <= 30)。在大多数使用场景中,5 FPS(默认值)对于屏幕共享来说已经足够。
我无法发送聊天消息
这可能有多种原因。
首先,尝试在 Demo 应用程序 ↗上进行示例会议。如果您无法在 Demo 应用程序中发送消息,请联系支持团队。如果您可以在 Demo 应用程序中发送消息,则问题出在集成端。
要排除集成问题,首先检查用户是否成功加入了会议。如果用户已成功加入会议,请检查该用户的预设是否拥有发送消息的权限。如果您使用的是自定义 UI,请检查核心聊天 API 是否工作正常,以将 Core SDK 从怀疑对象中排除。
如果这不能解决问题,请检查您的框架是否阻塞了 UI。像 Material UI 这样的框架可以使用 Drawer 组件中的焦点陷阱来阻塞输入焦点。通常有一个属性可以禁用焦点陷阱。Material UI 的 disableEnforceFocus 属性就是用于此目的。
如果您仍然无法发送消息,请联系支持团队。
我可以在我的网站中将 Cloudflare 托管的 Demo 应用程序或示例作为 iframe 使用吗?
我们强烈建议不要将 Cloudflare 托管的 Demo 应用程序或示例作为 iframe 嵌入到您的网站中,即使您通过 URL 参数传递身份验证令牌也是如此。
相反,应通过遵循 UI Kit 设置指南在您自己的网站中设置默认的会议 UI,或者在您自己的域名下部署 RealtimeKit Web 示例 ↗。这两种方法所需的精力都极少,并且能带来显著的好处:
- 控制:您保持对用户体验、结构和界面的完全控制。
- 稳定性:您的实现保持一致,不会在一夜之间发生变化,从而保护您的产品免受突然中断的影响。
- 可靠性:您控制何时以及如何进行升级,确保为您的用户提供稳定的体验。
Demo 应用程序和示例应用程序可能会随时更新,恕不另行通知。