先决条件
要在 Windows PC 上接收游戏邀请通知,请安装 XBOX Game Bar。默认情况下,Windows 10 操作系统 1903 版或更高版本上安装了 XBOX Game Bar 应用。选择 Windows 键+G 来启动 XBOX Game Bar 应用,以验证它是否已正确安装。如果 Windows PC 上未安装 XBOX Game Bar,你可以从 Microsoft Store 安装它。
注册多人游戏协议
注册多人游戏协议会告诉系统在用户接受多人游戏邀请时如何启动你的游戏。要注册多人游戏协议,需要将MultiplayerProtocol 元素添加到 MicrosoftGame.config 文件中,如以下代码所示。
Executable 属性指定哪个可执行文件处理多人游戏协议,如以下代码所示。
注册多人游戏邀请回调
XGameInviteRegisterForEvent 和 XGameInviteUnregisterForEvent API 现已被弃用。请改用 XGameActivationRegisterForEvent 和 XGameActivationUnregisterForEvent。有关迁移指南,请参阅 XGameActivation。Flat C
OnActivation() 处理程序方法的 inviteUri。然后,游戏必须等待 RegisterAppStateChangeNotification,该通知会在游戏完全恢复时进行通知,然后游戏才能继续使用 inviteUri 中提供的详细信息操作会话。
有关 RegisterAppStateChangeNotification 的详细信息,请参阅 XBOX 游戏生命周期(NDA 主题)。
从 XGameActivationCallback 解析 inviteUri
当你的游戏收到激活类型为AcceptedGameInvite 的 XGameActivationCallback 事件时,你可以从 XGameActivationInfo 结构中访问 inviteUri 字符串。inviteUri 采用以下格式之一。
接受游戏邀请
当用户接受游戏邀请时,游戏会收到游戏邀请回调,其inviteUri 如以下代码所示。
inviteHandleAccept表示回调是因为用户接受了游戏邀请而启动的。handle是你用于加入多人游戏会话的邀请句柄。invitedXuid是被邀请加入多人游戏会话的 XBOX 服务用户的 ID。senderXuid是发送游戏邀请的 XBOX 服务用户的 ID。context是发送方可能包含的额外(可选)上下文。
加入进行中的游戏会话
当用户尝试加入多人游戏会话时,游戏会收到邀请回调,其inviteUri 如以下代码所示。
activityHandleJoin表示回调是因为用户接受了游戏邀请而启动的。handle是你用于加入多人游戏会话的活动句柄。joinerXuid是尝试加入多人游戏会话的 XBOX 服务用户的 ID。joineeXuid是当前在多人游戏会话中的 XBOX 服务用户的 ID。
使用 handleId 加入多人游戏会话
使用多人游戏管理器
如果你使用多人游戏管理器,则可以通过使用 XblMultiplayerManagerJoinLobby API 并传入从inviteUri 中提取的 handleId 来将用户加入到多人游戏会话中。你还可以使用 xblUserHandle 作为 invitedXuid,如以下代码所示。
Flat C
直接使用多人游戏 API
如果你使用多人游戏 API,请按以下步骤配置游戏的多人游戏会话和邀请。- 通过使用 XblMultiplayerGetSessionByHandleAsync API 并将其传递到
handleId中来获取多人游戏会话文档。 - 通过使用 XblMultiplayerSessionJoin API 将本地用户加入到多人游戏会话文档中。
- 通过使用 XblMultiplayerWriteSessionByHandleAsync API 将多人游戏会话文档写入服务以提交此更改。
