Как приложение UWP/C# может зарегистрировать пользователя XBox и отобразить тег игрока?

Я пытаюсь повторно отправить приложение UWP (написанное на C#/XAML) в магазин Microsoft, чтобы оно поддерживало "Windows 10 Xbox" в дополнение к ранее поддерживаемым рабочим столам Windows и Windows Phone. Я могу без проблем развернуть (используя Visual Studio 2017) и запустить приложение на моей консоли Xbox One в режиме разработчика. Когда я отправляю в магазин, я получаю следующую ошибку:

Поскольку ваша игра использует Xbox Live, она должна:
· Создайте хотя бы одного активного пользователя и зарегистрируйте пользователя в Xbox.
· Отображение тега игрока Xbox пользователя в качестве основного дисплея и имени профиля.

Пожалуйста, добавьте это поведение и повторите свою игру.

Я ищу минимальный пример C# / XAML, который показывает мне, как решить эту проблему представления.

Кажется, что в посте "Доступ к изображению профиля Raw Gamer" я могу позаботиться о входе в систему, выполнив что-то вроде этого:

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\

В проекте я создал файл xboxservices.config, следуя разделу 6 настоящих инструкций.

Я создал элемент управления 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 Active User и Gamertag

Примечания для разработчика

Поскольку ваша игра использует Xbox Live, она должна: · Создать хотя бы одного активного пользователя и зарегистрировать пользователя в Xbox. · Отображение тега игрока Xbox пользователя в качестве основного дисплея и имени профиля. Пожалуйста, добавьте это поведение и повторите свою игру. Вы можете просмотреть документацию по Xbox Live для получения дополнительной информации. Ваша игра может не появиться в Коллекции Создателей, пока это не будет решено.

Протестированные устройства: Windows 10 Desktop, Windows 10 Xbox

Любые идеи о том, что я делаю здесь не так?

3 ответа

Решение

После долгих исследований и изучения полезных ответов, приведенных выше, я обнаружил следующие два способа заставить приложение Windows Universal быть одобренным в Магазине Microsoft для работы на Xbox One. Второй метод (см. Ниже) показывает, как это сделать, отображая тег игрока в приложении.

Чтобы приложение было одобрено для Xbox без использования "Xbox Live" (и отображения тега игрока), вам необходимо пройти процесс "Утверждение концепции". Вы можете начать, заполнив приложение ID@XBOX

Кроме того, вы можете получить одобрение приложения, интегрировав "Xbox Live" в свое приложение UWP, выполнив следующие действия для отображения тега игрока в своем приложении:

Убедитесь, что для вашего проекта (щелкните правой кнопкой мыши ваш проект-> Приложение) выбрана минимальная версия "Обновление создателей Windows 10 (10.0; сборка 15063)" и целевая версия "Обновление осенних создателей Windows 10 (10.0; сборка 16299)" "- в противном случае ссылка на"Microsoft.Xbox.Services.winmd"не появится, когда вы добавите пакет NuGet ниже.

Внутри Visual Studio используйте диспетчер пакетов Nuget, чтобы добавить Microsoft.Xbox.Live.SDK.WinRT.UWP.

В вашем проекте создайте файл xboxservices.config, следуя разделу 6 этих инструкций.

Создайте элемент управления TextBlock для отображения тега игрока. В моем случае я поместил его в верхнюю левую часть экрана приложения и передал следующую функцию для отображения тега игрока:

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 для Xbox, она также должна иметь возможность войти в Windows 10, чтобы пройти сертификацию. Правила подписи касаются платформы, например UWP, поэтому необходимо иметь возможность войти в Xbox Live на рабочем столе и Xbox.

Поэтому удалите ограничение, ограничивающее его для Xbox, и оно должно пройти (при условии, что вы также передаете другие сертификаты Xbox Live для отображения тега игрока и / или аватара пользователя)

Если вам не нужен Xbox Live, не добавляйте его, как указано выше.

Надеюсь, это поможет.

Другие вопросы по тегам