XBOX Live 辅助库概览
适用于 PlayFab Party 的 XBOX Live 辅助库旨在帮助使用 PlayFab Party 的游戏满足与通信相关的 XBOX Live 策略(XR-015 和 XR-045)。XBOX Live 辅助库可在 Nuget.org 上获取。与 PlayFab Party 库的兼容性
尽管我们努力将 API 中的重大变更降到最低,但对 PlayFab Party API 所做的一些更改可能导致 XBOX Live 辅助库返回错误的值。请参考下表以确保你所用库的版本兼容。跟踪 XBOX Live 用户
必须显式告知 PlayFab Party XBOX Live 辅助库当前参与 Party 会话的 XBOX Live 用户。建议标题通过侦听多人会话文档的更改并通过PartyXblManager::CreateLocalChatUser 和 PartyXblManager::CreateRemoteChatUser 在 XBOX Live 辅助库中反映该名册来告知辅助库。
对于本地用户:
PartyChatControlCreatedStateChange 更新时,你可能需要类似的关联逻辑。
对于本地和远程聊天用户,重要的是要记住:核心 Party 库通过 PlayFab Entity ID 标识用户和聊天控件,而 XBOX Live 辅助库通过 XBOX User ID 标识聊天用户。因此,通常需要在两者之间进行转换。有关详情,请参阅 XBOX Live 用户 ID 和 PlayFab Entity ID 之间的映射。
从 PartyXblLocalChatUser 创建 PartyLocalChatControl
只有当PartyXblLocalChatUser 对象与 Party 库中的 PartyLocalUser 和 PartyLocalChatControl 对象关联时才通常有用。生成 PartyLocalUser 和 PartyLocalChatControl 对象需要标题将其用户登录 PlayFab 并检索该用户的 entityId 和 titlePlayerEntityToken。登录可以通过 PlayFab CPP SDK 执行,但如果标题打算使用 XBOX Live 凭据登录 PlayFab,可以使用 PartyXblManager::LoginToPlayFab 以避免引入额外的依赖项。
以下示例展示了 XBOX Live 辅助库如何帮助你从 PartyXblLocalChatUser 对象创建 PartyLocalUser 和 PartyLocalChatControl 对象。有关创建 PartyXblLocalChatUser 对象的更多信息,请参阅跟踪 XBOX Live 用户。
PartyXblManager::LoginToPlayFab 后不久,你将收到一个 PartyXblLoginToPlayFabCompletedStateChange,其中包含登录操作的结果。
尊重 XBOX Live 用户的无障碍偏好设置
PartyXblLocalChatUser 对象公开了 XBOX Live 用户与 Party 聊天会话相关的一些无障碍偏好设置。标题可利用此信息立即启用 Party 的部分无障碍功能,为玩家提供更好的体验。
尊重 XBOX Live 用户的隐私设置和权限
根据 XBOX Live 策略,当用户的隐私或权限不允许时,标题不得允许通过 XBOX Live 进行通信。XBOX Live 辅助库允许你查询在 XBOX Live 策略允许的情况下两个用户之间最严格的PartyChatPermissionOptions,从而帮助你实现这一点。每当此值发生变化时,该库都会生成 PartyXblRequiredChatPermissionInfoChangedStateChange。可以通过调用 PartyXblLocalChatUser::GetRequiredChatPermissionInfo() 获取更新后的 PartyChatPermissionOptions。
PartyXblRequiredChatPermissionInfoChangedStateChange 以通知你现在可以获取更新后的 PartyChatPermissionOptions 值。
PartyXblChatPermissionInfo 结构包含两条信息:
- 一个
PartyChatPermissionOptions掩码,可以按原样传递给PartyLocalChatControl::SetPermission(),或者如果你已经有一个想使用的PartyChatPermissionOptions值但希望确保遵守 XBOX Live 策略,可以用作二进制掩码。 - 一个
PartyXblChatPermissionMaskReason值,提供有关PartyXblChatPermissionInfo::chatPermissionMask值的额外信息
尊重跨网络通信权限
支持 XBOX Live 与非 XBOX Live 玩家之间跨网络游戏和通信的标题,需要在允许这些玩家之间通信之前检查通信权限。XBOX Live 辅助库通过PartyXblLocalChatUser::GetCrossNetworkCommunicationPrivacySetting() 提供此信息。此方法返回一个 PartyXblCrossNetworkCommunicationPrivacySetting 枚举,有三种可能的值:
XBOX Live 用户 ID 和 PlayFab Entity ID 之间的映射
许多使用 PlayFab Party 的 XBOX Live 标题需要在 XBOX Live 用户 ID(在整个 XBOX Live 生态系统中使用)和 PlayFab Entity ID(由 PlayFab Party 使用)之间进行转换。使用PartyXblManager::GetEntityIdsFromXboxLiveUserIds,标题可以检索与给定 XBOX Live 用户 ID 列表对应的 PlayFab Entity ID 列表。标题应通过使用外部名册服务(如多人会话目录)已获得 XBOX Live 用户 ID 列表。通过将名册中的 XBOX Live 用户 ID 与它们的 PlayFab Entity ID 关联,我们可以构造一个映射,包含与你的游戏会话名册对应的所有 PlayFab Entity ID。然后可以使用此映射将 PartyEndpoint 和 PartyChatControl 对象与其对应的 XBOX Live 用户关联。
每个 XBOX Live 用户 ID 只有在此 XBOX Live 用户已链接到 PlayFab 账户时才会映射到 PlayFab Entity ID。首次为给定 XBOX 用户调用
PartyXblManager::LoginToPlayFab 时,会自动创建并链接 PlayFab 账户。或者,PlayFab SDK 的使用者可以使用 LoginWithXbox API 达到相同的效果。PartyXblLocalChatUser 与 PlayFab 进行身份验证。如果该用户之前未通过调用 PartyXblManager::LoginToPlayFab 登录到 PlayFab,则 XBOX Live 辅助库需要在后台对用户进行身份验证。
PartyXblManager::GetEntityIdsFromXboxLiveUserIds 后不久,你将收到一个包含操作结果的 PartyXblGetEntityIdsFromXboxLiveUserIdsCompletedStateChange。可以使用此结果来构建或更新你的映射。
Windows 特殊注意事项
在 Windows 上,XBOX Live 辅助库需要标题的帮助才能获取 XBOX Live 令牌。该库会通过生成PartyXblTokenAndSignatureRequestedStateChange 来请求令牌。标题可以使用 XBOX Authentication Library (XAL) 来满足这些请求。将此工作交给标题可确保它对通常与用户身份验证相关的任何 UI 处理和同意提示保持完全控制。
correlationId 调用 PartyXblManager::CompleteGetTokenAndSignatureRequest() 将它们提供给 XBOX Live 辅助库。