Xbox 개발자 프로그램에서 UWP에 대해 알려진 문제

이 토픽에서는 Xbox One 개발자 프로그램의 UWP와 관련된 알려진 문제를 다룹니다. 이 프로그램에 대한 자세한 내용은 Xbox의 UWP를 참조하세요.

[API 참조 항목 링크를 통해 이 페이지를 방문했으며 유니버설 장치 패밀리 API 정보를 보려는 경우 Xbox에서 아직 지원되지 않는 UWP 기능을 참조하세요.]

다음 목록에서는 발생할 수 있는 몇 가지 알려진 문제를 강조 표시합니다. 하지만 이 목록은 완전하지 않음을 참고하십시오.

피드백을 기다리고 있습니다.개발 유니버설 Windows 플랫폼 앱 포럼에서 찾은 문제를 보고해 주세요.

문제를 마주한 경우 해당 토픽의 정보를 읽고 자주 묻는 질문을 참조하고 포럼으로 도움을 요청하십시오.

자녀 보호 기능이 켜진 상태에서 VS 배포 실패함

콘솔에 설정 자녀 보호 기능이 켜져 있는 경우 VS에서 앱을 시작할 수 없습니다.

문제를 해결하려면 일시적으로 자녀 보호 기능을 사용하지 않도록 설정하거나 다음을 수행하십시오.

  1. 자녀 보호 기능이 해제된 상태에서 콘솔에 앱을 배포하십시오.
  2. 자녀 보호 기능을 켭니다.
  3. 콘솔에서 앱을 실행합니다.
  4. PIN 또는 암호를 입력하여 앱을 시작할 수 있도록 합니다.
  5. 앱이 실행됩니다.
  6. 앱을 닫습니다.
  7. F5를 사용하여 VS에서 시작하면 프롬프트 없이 앱이 시작됩니다.

이 시점에서 앱을 제거하고 다시 설치하더라도 사용자가 로그아웃할 때까지 권한은 고정 됩니다.

자녀 계정에만 사용할 수 있는 다른 유형의 예외 사항이 있습니다. 사용 권한을 부여하려면 자녀 계정에 부모가 로그인해야 하지만, 이 경우 부모는 자녀가 앱을 실행하도록 항상 허용하도록 선택할 수 있습니다. 해당 예외 사항은 클라우드에 저장되며 자녀가 로그아웃하고 다시 로그인하더라도 유지됩니다.

암호화된 파일을 암호화되지 않은 대상으로 StorageFile.CopyAsync가 복사하지 못함

암호화된 파일을 암호화되지 않은 대상으로 복사하는 데 StorageFile.CopyAsync를 사용하면 다음 예외 사항과 함께 호출을 실패합니다.

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

이는 앱 패키지의 일부로 배포된 파일을 다른 위치로 복사하려는 Xbox 개발자에게 영향을 줄 수 있습니다. 이 문제의 이유는 정품 모드에서는 콘텐츠가 Xbox에서 암호화되지만, Dev Mode에서는 그렇지 않기 때문입니다. 그 결과로, 개발과 테스트 동안에는 앱이 예상한 대로 작동하는 것처럼 보이지만, 게시되어 Xbox에 설치되면 오류가 발생할 수 있습니다.

Xbox One의 차단된 네트워킹 포트

Xbox One 디바이스의 UWP(유니버설 Windows 플랫폼) 앱은 [57344, 65535] 범위의 포트에 바인딩할 수 없습니다. 이러한 포트의 바인딩은 런타임에 성공하는 것처럼 보일 수 있지만 앱에 도달하기 전에 네트워크 트래픽을 자동으로 삭제할 수 있습니다. 앱은 가능하면 포트 0에 바인딩해야 하며, 이를 통해 시스템에서 로컬 포트를 선택할 수 있습니다. 특정 포트를 사용해야 하는 경우 포트 번호는 [1025, 49151] 범위에 있어야 하며, IANA 레지스트리와의 충돌을 방지해야 합니다. 자세한 내용은 서비스 이름 및 전송 프로토콜 포트 번호 레지스트리를 참조하십시오.

Windows 런타임 API 적용 범위

모든 Windows 런타임 API가 Xbox에서 지원되는 것은 아닙니다. 작동하지 않는 것으로 알고 있는 API 목록은 Xbox에서 아직 지원되지 않는 UWP 기능을 참조하세요. 다른 API에서 문제를 발견한 경우, 포럼에 보고하세요.

Xbox One 콘솔에서 서명한 보안 인증서는 신뢰할 수 있는 잘 알려진 게시자로 간주되지 않습니다. 따라서 제공된 인증서에 대해 다음 스크린샷과 유사한 경고가 표시됩니다. Windows 디바이스 포털에 액세스하려면 이 웹 사이트로 계속을 클릭하십시오.

Website security certificate warning

Xbox에서의 KnownFolders.MediaServerDevices 주의 사항

데스크톱에서 미디어 서버는 PC와 '페어링'되고, 디바이스 연결 서비스는 현재 어떤 서버가 온라인 상태인지 계속 추적하므로 초기 파일 시스템 쿼리가 즉시 현재 온라인 상태의 페어링된 서버 목록을 반환할 수 있습니다.

Xbox는 서버를 추가하거나 제거할 UI가 없어 초기 파일 시스템 쿼리가 항상 빈 값을 반환합니다. 쿼리를 작성하고 ContentsChanged 이벤트를 구독해야 하며, 알림을 받을 때마다 쿼리를 새로 고쳐야 합니다. 서버는 점차 연결되고 대부분 3초 이내에 발견됩니다.

단순한 예제 코드:

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

참고 항목