UWP / C#app如何登录XBox用户并显示gamertag?

问题描述 投票:4回答:3

我试图将一个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

关于我在这里做错了什么的想法?

c# uwp win-universal-app xbox-one xbox-live
3个回答
3
投票

经过大量研究,并回顾上面的有用答案,我发现以下两种方法可以让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”部分中的“测试”按钮。


0
投票

您可以使用以下代码段检查Xbox作为设备类型:

if ( Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily.Contains( "Xbox" ) )
{
   //do your Xbox specific actions
}

应用程序通常会在游戏主菜单的一角显示用户游戏玩家标签和图片


0
投票

如果您使用UWP for Xbox提交游戏,那么它还必须能够在Windows 10上登录才能通过Cert。签名规则围绕平台,例如UWP,因此必须能够登录桌面和Xbox上的Xbox Live。

因此,删除限制它到Xbox的限制,它应该通过(假设您还传递其他Xbox Live证书,用于显示用户gamertag和/或头像)

如果您不需要/使用Xbox live,请不要按照上面的建议添加它。

希望有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.