Problemas conocidos de UWP en el Programa para desarrolladores de Xbox

En este tema se describen los problemas conocidos de UWP en el Programa para desarrolladores de Xbox One. Para obtener más información sobre este programa, consulta UWP en Xbox.

[Si vino aquí desde un vínculo en un tema de referencia de API y busca información de api de familia de dispositivos universales, consulte Características de UWP no compatibles con Xbox.]

En la lista siguiente se resaltan algunos problemas conocidos que puede encontrar, pero esta lista no es exhaustiva.

Queremos recibir sus comentarios, así que notifique los problemas que encuentre en el foro Desarrollo de aplicaciones Plataforma universal de Windows.

Si se bloquea, lea la información de este tema, consulte Preguntas más frecuentes y use los foros para solicitar ayuda.

La implementación desde VS produce un error con controles parentales activados

Si la consola tiene controles parentales activados en Configuración, se producirá un error al iniciar la aplicación desde VS.

Para solucionar este problema, deshabilite temporalmente los controles parentales o:

  1. Implemente la aplicación en la consola con controles parentales desactivados.
  2. Activar controles parentales.
  3. Inicie la aplicación desde la consola.
  4. Escriba un PIN o una contraseña para permitir que la aplicación se inicie.
  5. Se iniciará la aplicación.
  6. Cierra la aplicación.
  7. Inicie desde VS mediante F5 y la aplicación se iniciará sin preguntar.

En este momento, el permiso es permanente hasta que cierre la sesión del usuario, aunque desinstale y vuelva a instalar la aplicación.

Hay otro tipo de exención que solo está disponible para las cuentas secundarias. Una cuenta secundaria requiere que un elemento primario inicie sesión para conceder permiso, pero cuando lo hacen, el elemento primario tiene la opción de elegir Permitir siempre que el elemento secundario inicie la aplicación. Esa exención se almacena en la nube y se conservará incluso si el elemento secundario cierra la sesión y vuelve a iniciar sesión.

StorageFile.CopyAsync no puede copiar archivos cifrados en el destino sin cifrar

Cuando StorageFile.CopyAsync se usa para copiar un archivo cifrado en un destino que no está cifrado, se producirá un error en la llamada con la siguiente excepción:

System.UnauthorizedAccessException: Access is denied. (Excep_FromHResult 0x80070005)

Esto puede afectar a los desarrolladores de Xbox que quieran copiar archivos que se implementan como parte de su paquete de aplicación en otra ubicación. La razón de esto es que el contenido del paquete se cifra en una Xbox en modo comercial, pero no en modo de desarrollo. Como resultado, la aplicación puede parecer que funciona según lo previsto durante el desarrollo y las pruebas, pero después produce un error una vez que se ha publicado y, a continuación, se instala en una Xbox comercial.

Puertos de red bloqueados en Xbox One

Plataforma universal de Windows aplicaciones (UWP) en dispositivos Xbox One están restringidas de enlace a puertos del intervalo [57344, 65535], ambos incluidos. Aunque el enlace a estos puertos puede parecer correcto en tiempo de ejecución, el tráfico de red se puede quitar silenciosamente antes de llegar a la aplicación. La aplicación debe enlazarse al puerto 0 siempre que sea posible, lo que permite al sistema seleccionar el puerto local. Si necesita usar un puerto específico, el número de puerto debe estar en el intervalo [1025, 49151], y debe comprobar y evitar conflictos con el registro IANA. Para obtener más información, consulte el Registro de números de puerto de protocolo de transporte y nombre de servicio.

Cobertura de la API de Windows Runtime

No todas las API de Windows Runtime se admiten en Xbox. Para obtener la lista de API que sabemos que no funcionan, consulta Características de UWP no admitidas en Xbox. Si encuentra problemas con otras API, infórtelos en los foros.

Recibirás una advertencia sobre el certificado proporcionado, similar a la siguiente captura de pantalla, porque el certificado de seguridad firmado por la consola Xbox One no se considera un publicador de confianza conocido. Para acceder al Portal de dispositivos Windows, haga clic en Continuar con este sitio web.

Advertencia de certificado de seguridad del sitio web

KnownFolders.MediaServerDevices advertencia en Xbox

En escritorio, los servidores multimedia se "emparejan" con el equipo y el servicio de asociación de dispositivos realiza un seguimiento constante de cuáles de los servidores están actualmente en línea, por lo que una consulta inicial del sistema de archivos puede devolver inmediatamente una lista de los servidores emparejados que están actualmente en línea.

En Xbox, no hay ninguna interfaz de usuario para agregar o quitar servidores, por lo que la consulta inicial del sistema de archivos siempre devolverá vacía. Debe crear una consulta y suscribirse al evento ContentsChanged y actualizar la consulta cada vez que reciba una notificación. Los servidores se engañarán y la mayoría se detectarán en un plazo de 3 segundos.

Código de ejemplo sencillo:

namespace TestDNLA {

    public sealed partial class MainPage : Page {
        public MainPage() {
            this.InitializeComponent();
        }

        private async void FindFiles_Click(object sender, RoutedEventArgs e) {
            try {
                StorageFolder library = KnownFolders.MediaServerDevices;
                var folderQuery = library.CreateFolderQuery();
                folderQuery.ContentsChanged += FolderQuery_ContentsChanged;
                IReadOnlyList<StorageFolder> rootFolders = await folderQuery.GetFoldersAsync();
                if (rootFolders.Count == 0) {
                    Debug.WriteLine("No Folders found");
                } else {
                    Debug.WriteLine("Folders found");
                }
            } catch (Exception ex) {
                Debug.WriteLine("Error: " + ex.Message);
            } finally {
                Debug.WriteLine("Done");
            }
        }

        private async void FolderQuery_ContentsChanged(Windows.Storage.Search.IStorageQueryResultBase sender, object args) {
            Debug.WriteLine("Folder added " + sender.Folder.Name);
            IReadOnlyList<StorageFolder> topLevelFolders = await sender.Folder.GetFoldersAsync();
            foreach (StorageFolder topLevelFolder in topLevelFolders) {
                Debug.WriteLine(topLevelFolder.Name);
            }
        }
    }
}

Consulte también