我正在尝试将 UWP 应用程序(用 C#/XAML 编写)重新提交到 Microsoft 商店,以便除了以前支持的 Windows 桌面和 Windows Phone 之外,它还支持“Windows 10 Xbox”。我可以部署(使用 Visual Studio 2017)并在我的 Xbox One 控制台上以开发人员模式运行该应用程序,没有任何问题。当我提交到商店时,我收到以下错误:
由于您的游戏使用 Xbox Live,它必须:
· 创建至少一个活跃用户并将该用户登录到 Xbox。
· 将用户的 Xbox 玩家代号显示为主要显示和个人资料名称。请添加此行为并重新提交您的游戏。
我正在寻找一个最小的 C#/XAML 示例,向我展示如何解决这个提交问题。
“访问原始玩家资料图片”上的帖子 似乎表明我可以通过执行以下操作来处理登录:
if (App is running on Xbox)
{
XboxLiveUser user = new XboxLiveUser();
SignInResult result = await user.SignInAsync();
}
但我不确定这是否正确,或者我将如何确定该应用程序正在 Xbox 上运行。
另外,我想知道我应该如何以及在哪里显示用户的玩家代号。我可以在 XAML 中的任何位置显示它吗?或者,我需要调用一些特殊的 Xbox api 来显示它吗?
简而言之,我需要一个非常简单的 C#/XAML 示例来说明如何执行检查应用程序是否在 Xbox 上运行、登录用户,然后在适当的位置显示用户的玩家代号的最低要求,以便我满足 Microsoft Store 要求。
更新: 我做了以下事情:
使用 Nuget 包管理器,我安装了 Microsoft.Xbox.Live.SDK.WinRT.UWP\
在项目中,我按照这些说明的第 6 节创建了一个 xboxservices.config 文件
我在屏幕左上角创建了一个 TextBlock 控件,并将其传递给以下函数以显示玩家代号:
public static async void InitializeXboxGamer(TextBlock gamerTagTextBlock)
{
if (Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily.Contains("Xbox"))
{
XboxLiveUser user = new XboxLiveUser();
SignInResult result = await user.SignInSilentlyAsync(Window.Current.Dispatcher);
if (result.Status == SignInStatus.UserInteractionRequired)
{
result = await user.SignInAsync(Window.Current.Dispatcher);
}
gamerTagTextBlock.Text = user.Gamertag;
gamerTagTextBlock.Visibility = Windows.UI.Xaml.Visibility.Visible;
}
else
{
gamerTagTextBlock.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
}
}
但是,这仍然未能通过提交测试,并出现以下错误:
应用策略:10.13.5 Xbox Live 活跃用户和玩家代号
开发者须知
由于您的游戏使用 Xbox Live,它必须: · 创建至少一个活跃用户并将该用户登录到 Xbox。· 将用户的 Xbox 玩家代号显示为主要显示和个人资料名称。请添加此行为并重新提交您的游戏。您可以查看 Xbox Live 文档以了解更多信息。在解决此问题之前,您的游戏可能不会出现在创作者收藏中。
测试设备:Windows 10 桌面版、Windows 10 Xbox
关于我在这里做错了什么的任何想法?