Problemi noti della piattaforma UWP nel programma per sviluppatori Xbox

Questo argomento descrive i problemi noti del programma per sviluppatori UWP su Xbox One. Per maggiori informazioni su questo programma, consulta UWP su Xbox.

[Se sei arrivato qui da un link in un argomento di riferimento sulle API e stai cercando informazioni sulle API della famiglia di dispositivi universali, vedi Le funzionalità UWP non supportate da Xbox.]

Il seguente elenco evidenzia alcuni problemi noti che potresti incontrare, ma non è esaustivo.

Vogliamo ricevere il tuo feedback, quindi ti invitiamo a segnalare qualsiasi problema riscontrato nel forum Developing Universal Windows Platform .

Se ti trovi in difficoltà, leggi le informazioni contenute in questo argomento, consulta Domande frequentie utilizza i forum per chiedere aiuto.

Il deploy da VS fallisce con i controlli parentali attivati

L'avvio dell'applicazione da VS non funzionerà se la console ha attivato il Parental Control nelle Impostazioni.

Per ovviare a questo problema, disabilita temporaneamente il Parental Controls, oppure:

  1. Distribuisci la tua applicazione alla console con il Controllo genitori disattivato.
  2. Attiva il controllo parentale.
  3. Avvia la tua applicazione dalla console.
  4. Inserisci un PIN o una password per consentire l'avvio dell'applicazione.
  5. L'applicazione si avvia.
  6. Chiudere l'app.
  7. Avvia l'applicazione da VS utilizzando F5 e l'applicazione si avvierà senza alcun suggerimento.

A questo punto l'autorizzazione è appiccicosa fino a quando l'utente non si disattiva, anche se disinstalla e reinstalla l'applicazione.

Esiste un altro tipo di esenzione, disponibile solo per i conti dei bambini. Un account bambino richiede che il genitore acceda per concedere l'autorizzazione, ma quando lo fa, il genitore ha la possibilità di scegliere di Sempre consentire al bambino di avviare l'app. L'esenzione viene memorizzata nel cloud e persiste anche se il bambino esce e rientra.

StorageFile.CopyAsync non riesce a copiare file crittografati in una destinazione non crittografata

Quando StorageFile.CopyAsync viene utilizzato per copiare un file crittografato in una destinazione non crittografata, la chiamata fallisce con la seguente eccezione:

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

Questo può interessare gli sviluppatori di Xbox che vogliono copiare i file distribuiti come parte del loro pacchetto di applicazioni in un'altra posizione. Il motivo è che il contenuto del pacchetto è criptato su una Xbox in modalità retail, ma non in modalità Dev. Di conseguenza, l'applicazione può sembrare funzionare come previsto durante lo sviluppo e i test, ma poi fallire una volta pubblicata e installata su una Xbox retail.

Porte di rete bloccate su Xbox One

Le app della Universal Windows Platform (UWP) sui dispositivi Xbox One non possono effettuare il binding alle porte nell'intervallo [57344, 65535], incluso. Sebbene il binding a queste porte possa sembrare riuscito in fase di esecuzione, il traffico di rete può essere silenziosamente interrotto prima di raggiungere la tua applicazione. La tua applicazione dovrebbe effettuare il binding alla porta 0 quando possibile, in modo da permettere al sistema di selezionare la porta locale. Se devi utilizzare una porta specifica, il numero di porta deve essere compreso nell'intervallo [1025, 49151] e devi controllare ed evitare conflitti con il registro IANA. Per maggiori informazioni, consulta il registro Service Name and Transport Protocol Port Number.

Copertura dell'API di Windows Runtime

Non tutte le API di Windows Runtime sono supportate da Xbox. Per l'elenco delle API che sappiamo non funzionare, consulta Le funzionalità UWP non supportate da Xbox. Se riscontri problemi con altre API, segnalali sul forum.

Riceverai un avviso sul certificato fornito, simile alla seguente schermata, perché il certificato di sicurezza firmato dalla tua console Xbox One non è considerato un editore affidabile e conosciuto. Per accedere al portale dei dispositivi di Windows, clicca su Continua su questo sito.

Website security certificate warning

Avviso di KnownFolders.MediaServerDevices su Xbox

Su Desktop, i media server sono "accoppiati" con il PC e il Device Association Service tiene costantemente traccia di quali server sono attualmente in linea, per cui un'interrogazione iniziale del file system può restituire immediatamente un elenco dei server accoppiati che sono attualmente in linea.

Su Xbox, non c'è un'interfaccia utente per aggiungere o rimuovere i server, quindi l'interrogazione iniziale del file system restituirà sempre un risultato vuoto. Devi creare una query e sottoscrivere l'evento ContentsChanged e aggiornare la query ogni volta che ricevi una notifica. I server arriveranno a raffica e la maggior parte sarà scoperta entro 3 secondi.

Un semplice esempio di codice:

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);
            }
        }
    }
}

Vedi anche