我试图将一个UWP应用程序(用C#/ XAML编写)重新提交到Microsoft商店,这样除了以前支持的Windows桌面和Windows Phone之外,它还支持“Windows 10 Xbox”。我可以部署(使用Visual Studio 2017)并在开发者模式下在我的Xbox One控制台上运行应用程序,没有任何问题。当我提交到商店时,我收到以下错误:
因为你的游戏使用Xbox Live,它必须: ·创建至少一个活动用户并将用户签名到Xbox。 ·将用户的Xbox gamertag显示为主显示和配置文件名称。
请添加此行为并重新提交您的游戏。
我正在寻找一个最小的C#/ XAML示例,它向我展示了如何解决此提交问题。
The post on "Accessing Raw Gamer Profile Picture" 似乎表明我可以通过这样做来处理登录:
if (App is running on Xbox)
{
XboxLiveUser user = new XboxLiveUser();
SignInResult result = await user.SignInAsync();
}
但我不确定这是否正确,或者我如何确定应用程序是否在Xbox上运行。
此外,我想知道我应该如何以及在哪里显示用户的gamertag。我可以在XAML的任何地方显示它吗?或者,是否需要调用一些特殊的Xbox API来显示它?
简而言之,我需要一个非常简单的C#/ XAML示例,该示例演示如何执行检查的最低要求,以查看应用程序是否在Xbox上运行,登录用户,然后在适当的位置显示用户的gamertag,以便我满足Microsoft Store的要求。
更新:我做了以下事情:
使用Nuget Package Manager,我安装了Microsoft.Xbox.Live.SDK.WinRT.UWP \
在项目中,我在Section 6 of these instructions之后创建了一个xboxservices.config文件
我在屏幕的左上方创建了一个TextBlock控件,并将其传递给以下函数以显示gamertag:
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 Active User和Gamertag
开发者须知
因为您的游戏使用Xbox Live,它必须:·创建至少一个活动用户并将用户签名到Xbox。 ·将用户的Xbox gamertag显示为主显示和配置文件名称。请添加此行为并重新提交您的游戏。您可以查看Xbox Live文档以获取更多信息。在此问题得到解决之前,您的游戏可能不会出现在Creators Collection中。
经测试的设备:Windows 10桌面,Windows 10 Xbox
关于我在这里做错了什么的想法?
经过大量研究,并回顾上面的有用答案,我发现以下两种方法可以让Windows通用应用程序获得Microsoft Store批准,以便在Xbox One上运行。第二种方法(见下文)显示了如何通过在应用程序中显示gamertag来完成此操作。
要在不使用“Xbox Live”(并显示gamertag)的情况下获得Xbox批准的应用程序,您需要完成"Concept Approval"流程。您可以通过填写ID@XBOX application开始
或者,您可以通过将“Xbox Live”集成到您的UWP应用程序中来批准应用程序,方法是在您的应用中显示以下内容:
确保您的项目(右键单击您的项目 - >应用程序)设置为最低版本的“Windows 10 Creators Update(10.0; Build 15063)”和目标版本的“Windows 10 Fall Creators Update(10.0; Build 16299) “ - 否则,在下面添加NuGet包时,不会显示对”Microsoft.Xbox.Services.winmd“的引用。
在Visual Studio内部,使用Nuget Package Manager添加Microsoft.Xbox.Live.SDK.WinRT.UWP
在您的项目中,在Section 6 of these instructions之后创建了一个xboxservices.config文件。
创建一个TextBlock控件来显示gamertag。在我的情况下,我把它放在应用程序屏幕的左上方,并将其传递给以下函数以显示gamertag:
public static async void InitializeXboxGamer(TextBlock gamerTagTextBlock)
{
try
{
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;
}
catch (Exception ex)
{
// TODO: log an error here
}
}
我在MainPage()构造函数的末尾调用了这个函数。
您必须在所有支持的平台(包括Windows 10)上调用此功能才能获得商店批准。
然后,转到developer.windows.com,登录,选择您的游戏,选择“服务”,选择“Xbox Live”,然后单击“为您的测试环境授权Xbox Live帐户”,以便您可以在本地进行测试。
此外,请务必单击“Xbox Live”部分中的“测试”按钮。
您可以使用以下代码段检查Xbox作为设备类型:
if ( Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily.Contains( "Xbox" ) )
{
//do your Xbox specific actions
}
应用程序通常会在游戏主菜单的一角显示用户游戏玩家标签和图片
如果您使用UWP for Xbox提交游戏,那么它还必须能够在Windows 10上登录才能通过Cert。签名规则围绕平台,例如UWP,因此必须能够登录桌面和Xbox上的Xbox Live。
因此,删除限制它到Xbox的限制,它应该通过(假设您还传递其他Xbox Live证书,用于显示用户gamertag和/或头像)
如果您不需要/使用Xbox live,请不要按照上面的建议添加它。
希望有所帮助。