开发

“邀请加入应用”功能概览

更新时间: 2024年4月16日
Apps for children can't use Platform SDK features
如果您自我证明您的应用主要用于未满 13 岁的儿童,则必须避免使用平台 SDK 功能。这一限制确保遵守特定于年龄的守则。为确保合规性,已为您的应用禁用数据使用情况检查。
Prerequisites
为应用实现“邀请加入应用”功能,必须满足以下条件:
  • 您的应用必须提供沉浸式效果,这意味着应用必须在 VR/MR 模式下运行。目前,“邀请加入应用”功能不支持非沉浸式环境,例如 2D 面板应用或标准 Android 应用。
  • 必须为应用创建至少一个目标位置。
  • 必须已为应用内的用户启用组队模拟。
集成“邀请加入应用”功能让用户可以轻松地从 Quest 菜单直接邀请关注者、近期一起玩过的用户或游戏内联系人加入多人游戏会话。如果用户发送了邀请,接收人会在 VR 或 Meta Horizon 应用中收到通知,他们可以选择接受邀请加入多人游戏会话。

概览

“邀请加入应用”功能支持用户将组队模拟设置为大厅会话编号,且可供加入,让其他人可以通过邀请由 Meta Quest 加入他们。为了让用户收发邀请,is_joinable 标记必须设置为 true。
邀请对话框列表中有关注者、近期一起玩过的用户以及推荐的用户。如果发出邀请的用户没有关注者或近期没有互动,列表不会推荐任何受邀用户。

用户体验

Invite Overview
用户进入大厅后,才能看见 Invite to App(邀请加入应用)按钮。如果名单中不止一位用户,Roster(名单)按钮会取代 Invite(邀请)按钮。如果应用支持更多用户,则可通过 Roster(名单)按钮邀请更多用户。
接受邀请后,受邀用户的组队模拟必定会更新。这会将他们添加到“名单”中;Roster(名单)按钮可取代 Meta Quest 菜单中的 Invite(邀请)按钮。用户一次只能在一份名单中。
邀请用户的主要流程如下:
  1. 按下应用中的 Meta Quest 按钮。
  2. 从 Meta Quest 菜单中选择 Invite(邀请)。
  3. 从推荐用户列表中选择一位或多位用户。
  4. 向所选用户发送应用加入邀请。
  5. 受邀用户会收到提示通知。如果用户错过了提示,邀请会出现在他们的通知列表中。
  6. 接受邀请的用户会启动应用并加入发出邀请的用户。
“邀请加入应用”并不会提供 VoIP 或联网解决方案。开发者负责实施他们自己的 VoIP 解决方案。

开发者应处理且向用户展示的“加入失败”场景

Meta Quest 提供了一组系统级错误对话框,如果您没有自己的错误对话框,则可在应用程序遇到以下情况时调用这些对话框。如需详细了解,请参阅可调用错误对话框
  • 会话满员
  • 无法建立网络连接且超时
  • 当前用户无法使用目标位置
  • 目标位置位于用户没有的 DLC 中
  • 未完成教程学习
  • 当前用户无法使用该会话
  • 找不到该会话或该会话不再可用
  • 比赛已经开始
  • 用户等级不够高
  • 关卡尚未解锁
  • 必须先更新应用
  • 用户拥有儿童账户

最佳实践

  • 不要重复使用编号。确保编号具有唯一性。

“邀请加入应用”快速入门

以下是将“邀请加入应用”集成到应用程序并实现与平台 SDK 的 1 级集成所需的最低限度的实现。

“邀请加入应用”API

必须在开发者面板中上传二进制文件才能接收邀请。如需进一步了解如何上传应用的二进制内容,请参阅[提交应用](/resources/publish-intro/)。

启动邀请对话框

此方法会启动“邀请加入应用”对话框并传递推荐用户列表。
OVRP_PUBLIC_FUNCTION(ovrRequest) ovr_GroupPresence_LaunchInvitePanel(ovrInviteOptionsHandle options)
如果没有发生错误,此方法会返回类型为 ::ovrMessage_GroupPresence_LaunchInvitePanel 的消息作为回应。

启动名单对话框

此方法会启动“名单”对话框并传递推荐用户列表。
OVRP_PUBLIC_FUNCTION(ovrRequest) ovr_GroupPresence_LaunchRosterPanel(ovrRosterOptionsHandle options)
如果没有发生错误,此方法会返回类型为 ::ovrMessage_GroupPresence_LaunchRosterPanel 的消息作为回应。

设置当前用户的组队模拟

此方法会设置当前用户的组队模拟。此处的所有设置都会覆盖用户的当前模拟设置。
OVRP_PUBLIC_FUNCTION(ovrRequest) ovr_GroupPresence_Set(ovrGroupPresenceOptionsHandle groupPresenceOptions)
如果没有发生错误,此方法会返回类型为 ::ovrMessage_GroupPresence_Set 的消息作为回应。

设置当前用户组队模拟的目标位置

此方法会设置当前用户组队模拟的目标位置。只有目标位置会更改,用户模拟的其他设置保持不变。
OVRP_PUBLIC_FUNCTION(ovrRequest) ovr_GroupPresence_SetDestination(const char *api_name)
如果没有发生错误,此方法会返回类型为 ::ovrMessage_GroupPresence_SetDestination 的消息作为回应。

设置当前用户的组队模拟 is_joinable 标记

此方法会设置当前用户组队模拟的 is_joinable 标记。用户模拟有关的其他设置都会保持不变。如果用户的状态为“可加入”,他们就可以发送邀请。
OVRP_PUBLIC_FUNCTION(ovrRequest) ovr_GroupPresence_SetIsJoinable(bool is_joinable)
如果没有发生错误,此方法会返回类型为 ::ovrMessage_GroupPresence_SetIsJoinable 的消息作为回应。

设置当前用户组队模拟的大厅会话编号

此方法会设置当前用户组队模拟的大厅会话编号。只有大厅会话编号会更改,用户模拟的其他设置保持不变。
OVRP_PUBLIC_FUNCTION(ovrRequest) ovr_GroupPresence_SetLobbySession(const char *id)
如果没有发生错误,此方法会返回类型为 ::ovrMessage_GroupPresence_SetLobbySession 的消息作为回应。

设置当前用户组队模拟的比赛会话编号

此方法会设置当前用户组队模拟的比赛会话编号。只有比赛会话编号会更改,用户模拟的其他设置保持不变。
OVRP_PUBLIC_FUNCTION(ovrRequest) ovr_GroupPresence_SetMatchSession(const char *id)
如果没有发生错误,此方法会返回类型为 ::ovrMessage_GroupPresence_SetMatchSession 的消息作为回应。