Problèmes connus avec UWP dans le programme pour les développeurs XboxKnown issues with UWP on Xbox Developer Program

Cette rubrique décrit les problèmes connus liés à la plateforme UWP dans le programme pour les développeurs Xbox.This topic describes known issues with the UWP on Xbox One Developer Program. Pour plus d’informations sur ce programme, voir UWP sur Xbox.For more information about this program, see UWP on Xbox.

[Si vous êtes arrivé ici à partir d’un lien figurant dans une rubrique de référence sur les API et que vous recherchez des informations sur l’API de la famille d’appareils universels, consultez fonctionnalités UWP non prises en charge sur Xbox.][If you came here from a link in an API reference topic, and are looking for Universal device family API information, see UWP features not supported on Xbox.]

La liste ci-après répertorie certains problèmes connus que vous pourriez rencontrer, mais cette liste n’est pas exhaustive.The following list highlights some known issues that you may encounter, but this list is not exhaustive.

Vos commentaires nous intéressent. Par conséquent, n’hésitez pas à nous faire part de vos éventuels problèmes sur le forum Développement d’applications de plateforme Windows universelle.We want to get your feedback, so please report any issues that you find on the Developing Universal Windows Platform apps forum.

Si vous êtes bloqué, lisez les informations présentées dans cette rubrique, consultez le Forum aux questions et utilisez les forums pour demander de l’aide.If you get stuck, read the information in this topic, see Frequently asked questions, and use the forums to ask for help.

Le déploiement à partir de Visual Studio échoue lorsque les paramètres de contrôle parental sont activésDeploying from VS fails with Parental Controls turned on

Le lancement de votre application à partir de Visual Studio n’aboutit pas si le contrôle parental est activé dans les paramètres.Launching your app from VS will fail if the console has Parental Controls turned on in Settings.

Pour contourner ce problème, désactivez ces paramètres temporairement ou procédez comme suit :To work around this issue, either temporarily disable Parental Controls, or:

  1. Déployez votre application sur la console en désactivant les paramètres de contrôle parental.Deploy your app to the console with Parental Controls turned off.
  2. Activez ces paramètres.Turn on Parental Controls.
  3. Lancez votre application à partir de la console.Launch your app from the console.
  4. Saisissez un mot de passe ou un code confidentiel pour permettre à l’application de se lancer.Enter a PIN or password to allow the app to launch.
  5. L’application se lance.App will launch.
  6. Fermez l’application.Close the app.
  7. Effectuez le lancement à partir de Visual Studio à l’aide de la touche F5 ; l’application s’ouvre sans afficher d’invite.Launch from VS using F5, and the app will launch with no prompting.

À ce stade, l’autorisation est rémanente jusqu’à ce que vous fermiez la session de l’utilisateur, même si vous désinstallez l’application et la réinstallez.At this point the permission is sticky until you sign the user out, even if you uninstall and reinstall the app.

Il existe un autre type d’exemption, uniquement disponible pour les comptes enfant.There is another type of exemption that is only available for child accounts. Un compte enfant requiert un parent, qui doit se connecter pour accorder l’autorisation adéquate. Lorsqu’il se connecte, le parent peut choisir d’autoriser systématiquement l’enfant à lancer l’application (paramètre Toujours).A child account requires a parent to sign in to grant permission, but when they do, the parent has the option of choosing to Always allow the child to launch the app. Cette exemption est stockée dans le cloud et est persistante, même si l’enfant se déconnecte et se reconnecte.That exemption is stored in the cloud and will persist even if the child signs out and signs back in.

StorageFile. CopyAsync ne parvient pas à copier les fichiers chiffrés vers une destination non chiffréeStorageFile.CopyAsync fails to copy encrypted files to unencrypted destination

Quand StorageFile. CopyAsync est utilisé pour copier un fichier chiffré dans une destination qui n’est pas chiffrée, l’appel échoue avec l’exception suivante :When StorageFile.CopyAsync is used to copy a file that is encrypted to a destination that is not encrypted, the call will fail with the following exception:

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

Cela peut affecter les développeurs Xbox qui souhaitent copier des fichiers déployés dans le cadre de leur package d’application vers un autre emplacement.This can affect Xbox developers who want to copy files that are deployed as part of their app package to another location. Cela est dû au fait que le contenu du package est chiffré sur une Xbox en mode de vente au détail, mais pas en mode dev.The reason for this is that the package contents are encrypted on an Xbox in retail mode, but not in Dev Mode. Par conséquent, l’application peut sembler fonctionner comme prévu pendant le développement et les tests, mais elle échouer une fois qu’elle a été publiée puis installée sur une Xbox de vente au détail.As a result, the app may appear to work as expected during development and testing, but then fail once it has been published and then installed to a retail Xbox.

Ports réseau bloqués sur Xbox OneBlocked networking ports on Xbox One

Les applications de plateforme Windows universelle (UWP) sur les appareils Xbox One ne sont pas autorisées à établir une liaison aux ports dans la plage [57344, 65535] (numéros de port inclus).Universal Windows Platform (UWP) apps on Xbox One devices are restricted from binding to ports in the range [57344, 65535], inclusive. Même si la liaison à ces ports semble réussir au moment de l’exécution, le trafic réseau peut être annulé sans avertissement avant d’atteindre votre application.Although binding to these ports might appear to succeed at run-time, network traffic can be silently dropped before reaching your app. Votre application doit si possible établir une liaison au port  0, ce qui permet au système de sélectionner le port local.Your app should bind to port 0 wherever possible, which allows the system to select the local port. Si vous avez besoin d’utiliser un port spécifique, le numéro de port doit être dans la plage [1025, 49151]. Vous devez vérifier dans le Registre IANA et éviter les conflits.If you need to use a specific port, the port number must be in the range [1025, 49151], and you should check and avoid conflicts with the IANA registry. Pour plus d’informations, voir le Registre des noms de services et des numéros de ports des protocoles de transport.For more information, see the Service Name and Transport Protocol Port Number Registry.

Couverture de l’API Windows RuntimeWindows Runtime API coverage

Toutes les API Windows Runtime ne sont pas prises en charge sur Xbox.Not all Windows Runtime APIs are supported on Xbox. Pour obtenir la liste des API que nous savons ne pas utiliser, consultez fonctionnalités UWP non prises en charge sur Xbox.For the list of APIs that we know don't work, see UWP features not supported on Xbox. Si vous rencontrez des problèmes avec d’autres API, signalez-les sur les forums.If you find issues with other APIs, please report them on the forums.

Vous recevrez un avertissement concernant le certificat fourni, semblable à la capture d’écran ci-dessous, car le certificat de sécurité signé par votre console Xbox One n’est pas considéré comme un éditeur approuvé bien connu.You will receive a warning about the certificate that was provided, similar to the following screenshot, because the security certificate signed by your Xbox One console is not considered a well-known trusted publisher. Pour accéder à Windows Device Portal, cliquez sur Poursuivre sur ce site web.To access the Windows Device Portal, click Continue to this website.

Avertissement concernant le certificat de sécurité d’un site web

Fichier KnownFolders. MediaServerDevices de la XboxKnownFolders.MediaServerDevices caveat on Xbox

Sur le bureau, les serveurs multimédias sont « couplés » avec le PC, et le service d’association d’appareils effectue en permanence le suivi des serveurs actuellement en ligne, de sorte qu’une requête de système de fichiers initiale peut retourner immédiatement une liste des serveurs associés actuellement en ligne.On Desktop, media servers are “paired” with the PC, and the Device Association Service is constantly tracking which of the servers are currently on-line, so an initial file system query can immediately return a list of the paired servers that are currently online.

Sur Xbox, il n’y a pas d’interface utilisateur permettant d’ajouter ou de supprimer des serveurs. la requête de système de fichiers initiale renverra donc toujours vide.On Xbox, there is no UI to add or remove servers, so the initial file system query will always return empty. Vous devez créer une requête et vous abonner à l’événement ContentsChanged et actualiser la requête chaque fois que vous recevez une notification.You must create a query and subscribe to the ContentsChanged event and refresh the query each time you get a notification. Les serveurs seront progressivement détectés et la plupart auront été découverts dans un délai de 3 secondes.Servers will trickle in and most will have been discovered within 3 seconds.

Exemple de code simple :Simple example code:

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

Voir aussiSee also