我正在尝试将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 文档以获取更多信息。你的游戏可能不会出现在 创作者收藏直到这个问题得到解决。
经过测试的设备:Windows 10桌面,Windows 10 Xbox
关于我在这里做错了什么想法?
答案 0 :(得分:3)
经过大量研究,并回顾上面的有用答案后,我发现了以下两种方式,以使Windows应用程序获得Microsoft Store批准,以便在Xbox One上运行。第二种方法(见下文)显示了如何通过在应用程序中显示gamertag来实现这一目的。
要在不使用" Xbox Live"的情况下获取适用于Xbox的应用程序(并显示玩家代号),您需要完成"Concept Approval"过程。您可以填写ID@XBOX application
开始或者,您可以通过在您的UWP应用程序中集成" Xbox Live" 来批准应用程序,方法是执行以下以显示游戏广告应用程式:
确保您的项目(右键单击您的项目 - >应用程序)设置为" Windows 10 Creators Update(10.0; Build 15063)"的最低版本。和#34; Windows 10 Fall Creators Update(10.0; Build 16299)的目标版本" - 否则,引用" Microsoft.Xbox.Services.winmd"在下面添加NuGet包时,它不会出现。
在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您的测试环境的实时帐户"这样你就可以在本地测试了。
另外,请务必点击"测试" " Xbox Live"中的按钮部分。
答案 1 :(得分:0)
您可以使用以下代码段检查Xbox作为设备类型:
if ( Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily.Contains( "Xbox" ) )
{
//do your Xbox specific actions
}
应用程序通常会在游戏主菜单的一角显示用户游戏玩家标签和图片
答案 2 :(得分:0)
如果您使用UWP for Xbox提交游戏,那么它还必须能够在Windows 10上登录才能通过Cert。 签名规则围绕平台,例如UWP,因此必须能够登录桌面和Xbox上的Xbox Live。
因此,删除将其限制为Xbox的限制,它应该通过(前提是您还传递其他Xbox Live证书以显示用户gamertag和/或头像)
如果您不需要/使用Xbox live,请不要按照上面的建议添加它。
希望有所帮助。