开发

派对和派对聊天

This is a Platform SDK feature requiring Data Use Checkup
使用此功能或其他任何平台 SDK 功能之前,您需要完成数据使用情况检查 (DUC)。DUC 可确保您遵守开发者政策。这需要你团队的管理员证明您对用户数据的使用符合平台守则。在应用审核团队审核并批准您的 DUC 之前,平台功能仅供测试用户使用。
派对可让用户在 Meta Horizon 主控室中与好友进行语音聊天。例如,一群好友可以在主控室中发起派对,聊一聊他们想一起玩的游戏。然后,当他们启动应用时,他们的聊天会话在那个应用中会继续保持。用户可以创建派对,发起与派对成员的语音聊天,还可以邀请好友加入派对聊天。派对语音聊天会在 VR 中跨多个应用持续存在,让用户在不同应用之间导航时可以继续互动。如果您的多人游戏应用还提供了语音聊天功能,您可能希望禁用派对聊天。
Apps for children can't use Platform SDK features
如果您自我证明您的应用主要用于未满 13 岁的儿童,则必须避免使用平台 SDK 功能。这一限制确保遵守特定于年龄的守则。为确保合规性,已为您的应用禁用数据使用情况检查。

获取当前派对

Getting the current party is not available
自 2025 年 6 月起,您将无法再使用用来获取当前派对的 API。
用于获取当前派对的 API 是:
Oculus.Platform.Parties.GetCurrent()
注意:对此 API 的任何请求都将返回代码为 10 的错误响应。错误消息“服务器响应不是有效的 JSON”是服务端移除该接口后的预期结果。此问题非临时性故障,且目前无替代 API 可用。

VoIP 选项

不需要通过集成来支持派对;但是,如果您打算在应用中使用麦克风来发出命令或进行聊天,您应该考虑一些事项。用户可以使用以下类型的聊天:
  • 系统 VoIP,也称为派对 VoIP,是在派对和 Horizon 主控室中使用的 VoIP 服务。此服务不需要集成,可供任何用户使用。
  • 平台 VoIP 是 Meta Horizon 平台提供的 VoIP 服务,是在您的应用中集成语音聊天的一个选项。欲了解更多信息,请参阅语音聊天 (VoIP)
  • 应用 VoIP 是您在应用中使用的任何非 Meta Quest VoIP 服务。

多人游戏应用中 VoIP 选项

如果您打算在应用中实施 VoIP,无论是平台 VoIP 还是应用 VoIP,您都需要处理两个聊天流媒体。

多个聊天流媒体示例

以下示例用于说明有多个聊天流的场景:
  1. Aya 和 Betty 在派对中
  2. Aya 启动了 Kai 正在玩的应用
  3. Aya 邀请 Kai 参加多人游戏
如果不处理这种情况,Aya 将能在派对 VoIP 上与 Betty 交谈,在应用或平台 VoIP 上与 Kai 交谈,但 Betty 和 Kai 将无法听到对方的声音。
处理这种情况的一种方法是,禁用派对 VoIP 流媒体,并将 Kai 添加到应用 VoIP,以避免发生这种冲突。
  1. 您禁用派对 VoIP
  2. 将 Kai 添加到应用 VoIP
  3. Aya、Betty 和 Kai 可以一起交谈了
Meta Quest 提供了系统 VoIP API,您可以用它来检测用户是否在派对中并且正在使用系统 VoIP,您还可以用它来禁用 VoIP 流媒体。

检查状态

如要使用系统 VoIP API,首先要检查系统 VoIP 的状态,看看用户是否处于活动状态。
您可以通过两种方法来检查系统 VoIP 的状态:检查每一帧或者侦听通知。
  1. 检查每一帧 - 如要随时检查系统 VoIP 是否处于活动状态,请调用以下函数。请注意,这是同步函数,不是请求:
    Voip.GetSystemVoipStatus() == SystemVoipStatus.Active
  2. 侦听通知 - 如要收到 VoIP 状态更改的通知,您可以发出以下请求:在 Unity 侦听 MessageType.Notification_Voip_SystemVoipState,其拥有一个 Message<SystemVoipState>,从此处可以访问“状态”字段,或者使用 Message<SystemVoipState> 回调来调用 SetSystemVoipStateNotificationCallback
状态可能会快速变化。您从通知消息中提取的值将是通知被添加到消息队列时的状态,这可能与随后处理消息时的状态不同。您可能要侦听通知,然后忽略它的值,并使用同步函数检查当前状态。

禁用 VoIP 流媒体

接下来,您可以禁用用户不应听到的流媒体,或者让用户选择要收听哪个流媒体。
如果系统 VoIP 处于活动状态,您可以:
  • 为用户启用应用内 VoIP - 如果您希望用户在您的应用内聊天中,而不是在他们的派对聊天中,请使用这个选项。通过调用 Platform.VoIP.SetSystemVoipSuppressed(bool suppressed) 来禁用系统 VoIP,然后使用平台 VoIP 或您自己的 VoIP 服务来运行应用 VoIP。
  • 为用户启用系统/派对 VoIP - 如果您希望用户能继续使用他们的派对聊天,而不是应用 VoIP,请使用这个选项。禁用您的应用内 VoIP(不将用户的麦克风输入发送给其他用户,也不向该用户播放其他用户的音频)。如果您使用平台 VoIP,可在语音聊天 (VoIP) 页面上找到关于禁用该 VoIP 流媒体的信息。
如果禁用系统 VoIP 的应用退出,系统 VoIP 将解除禁用。您可能还希望在用户离开应用的多人游戏环节(例如主控室菜单)时停止禁用用户的派对 VoIP,以便让他们能继续与所在的派对聊天。
您可能还想让用户能在系统 VoIP 与应用内 VoIP 之间切换。这可以让用户选择,他们是要继续与他们的派对交谈,还是要使用您的应用内 VoIP,前者需要禁用应用内 VoIP,后者需要禁用系统 VoIP。
注意:下方的麦克风切换器和麦克风部分仅适用于 Android 开发。

使用麦克风切换器管理共享麦克风

Android 一次只允许一台设备访问麦克风。借助 Meta 开发的麦克风切换器,用户能在派对 VoIP 与应用内 VoIP 之间做出选择。请参阅麦克风切换器文档获取更多信息。

访问麦克风

在 Unity 中,请参阅 Unity 麦克风文档来访问麦克风。