파일 선택기 계약과 클라우드 서비스의 통합 방법

과거에는 사용자가 로컬 PC에서 문서, 사진, 동영상 및 음악을 정리하고, 공유하고, 관리했습니다. 하지만 클라우드가 등장하면서 중요한 문서를 액세스하고, 작업하고, 관리할 수 있는 훨씬 다양한 방법이 속속 생겨나고 있습니다. Windows 8은 클라우드 서비스를 앱과 직접 긴밀하게 통합하는 여러 가지 새로운 시나리오를 제공하므로 앱 개발자는 과거에 불가능했던 완전히 새로운 경험을 구현할 수 있습니다.

이러한 시나리오 중 상당수는 파일 선택기 계약을 사용하는 SkyDrive 앱에서도 중요합니다. 파일 선택기 계약은 개발자의 앱에 저장된 사용자의 문서, 사진, 동영상 및 음악을 다른 모든 Windows 8 앱에서도 사용할 수 있도록 설계되었습니다. 이 글에서는 SkyDrive 및 Windows 8으로 클라우드에 앱, 파일, PC 및 장치 연결에서 소개한 바 있는 3가지 파일 선택기 계약을 모두 구현한 SkyDrive 앱을 예로 들어 다음 내용을 살펴보겠습니다.

  • 파일 선택기 계약에 대한 소개 및 파일 선택기 계약을 사용하여 앱에 새로운 경험을 구현하는 방법
  • 앱에 적합한 파일 선택기 계약을 선택하는 방법
  • 파일 선택기 계약을 구현하기 위한 유용한 정보

SkyDrive 앱의 파일 선택기 지원

SkyDrive 앱의 파일 선택기 지원

파일 선택기 계약의 개요

이름에서 알 수 있듯이 파일 선택기 계약이란 Windows 8 앱이 다른 모든 Windows 8 앱에 파일, 저장 위치, 그리고 심지어 파일 업데이트를 제공할 수 있도록 파일 선택기를 확장하는 것입니다. 예를 들어 스크린샷을 보면 파일 선택기 내에서 SkyDrive의 모든 파일에 액세스할 수 있습니다.

파일 선택기 계약은 3개의 독립 계약, 즉 파일 선택기, 파일 저장 선택기, 캐시된 파일 업데이트 프로그램으로 구성되어 있습니다. 개발자는 3개의 계약 중에서 자신의 앱에 가장 적합한 계약만 구현하면 됩니다. 어떤 계약을 구현할지 고민할 때 다음과 같은 지침을 따르면 됩니다.

  • 파일 선택기: 다른 방법으로는 쉽게 액세스할 수 없는 파일을 볼 수 있는 고유하고 중요한 파일 보기를 제공하는 앱에 사용합니다. 예를 들어 SkyDrive 앱에 이 계약을 구현하면 모든 Windows 8 앱에서 SkyDrive 서비스에 저장된 파일에 액세스할 수 있습니다.
  • 파일 저장 선택기: 파일 열기 선택기 계약을 구현한 앱의 경우 사용자가 앱을 파일 저장 위치로 사용하기를 원한다면 이 계약을 구현합니다. 예를 들어 SkyDrive 앱에 이 계약을 구현하면 사용자는 모든 Windows 8 앱에서 SkyDrive 서비스에 간편하게 파일을 저장할 수 있습니다. 일부 앱의 경우 데이터를 앱으로 옮길 수 있도록 파일 저장 선택기 계약을 구현할 것인지, 공유 대상 계약을 구현할 것인지, 아니면 둘 다 구현할 것인지 결정해야 합니다. 데이터 공유 및 교환 항목을 참조하면 이 결정을 내리는 데 도움이 됩니다.
  • 캐시된 파일 업데이트 프로그램: 앱이 자동으로 파일을 추적하고 업데이트하여 앱의 중앙 저장소와 동기화 상태를 유지하도록 하려면 이 계약을 구현합니다. SkyDrive 앱에 이 계약을 구현하면 SkyDrive 앱에서 선택하거나 SkyDrive 앱에 저장한 모든 파일을 사용자가 파일 선택기를 거치지 않고 간편하게 업데이트하거나 새로 고칠 수 있습니다. 예를 들어 즐겨찾는 사진 앱을 사용하여 SkyDrive에서 사진 하나를 열고 사진을 편집하면 파일 선택기에서 따로 작업하지 않아도 변경 사항이 SkyDrive에 자동으로 전송됩니다.

이러한 계약은 순서대로 구현하는 것이 좋습니다. 예를 들어 Windows 8 앱에 파일 열기 선택기 계약을 먼저 구현한 후 파일 저장 선택기 계약을 구현할지 여부를 고민하는 것이 좋은 순서입니다.

 

파일 선택기 계약의 구현 순서

파일 선택기 계약의 구현 순서

계약의 개요를 살펴보았으니 지금부터는 각 계약을 구현하는 방법에 대해 자세히 알아보겠습니다. 개념에 대한 이해를 돕기 위해 계속해서 SkyDrive 앱을 예로 들겠습니다.

시나리오 1: 파일 열기 선택기 계약

파일 열기 선택기 계약은 사용자가 개발자의 앱에서 저장, 생성 및 관리하는 파일을 다른 Windows 8 앱에서도 사용할 수 있도록 만들어 주는 방법입니다. 예를 들어 SkyDrive 앱에 파일 열기 선택기 계약을 구현하면 다른 Windows 8 앱에서 SkyDrive의 모든 파일에 액세스할 수 있습니다. Windows 8 앱으로 무엇을 하든 어떤 Windows 8 앱을 사용하든 관계없이 계정 사진 설정부터 SkyDrive에서 문서 열기까지 모든 SkyDrive 콘텐츠에 액세스할 수 있습니다.

앱에서 계약을 구현하면 파일 선택기의 열기 모드 내에서 앱을 시작하고 표시할 수 있습니다. 파일 선택기 메뉴 내에는 사용자가 언제라도 앱에서 제공하는 파일 형식을 선택할 수 있는 앱 진입점이 표시됩니다.

파일 열기 선택기

파일 선택기 메뉴의 SkyDrive

파일 선택기를 실행하면 파일 선택기의 보기 영역 내에 앱이 배치되고 매니페스트에서 지정한 색 구성표에 따라 파일 선택기 프레임의 색이 결정됩니다.

skydrive_thailand

파일 열기 선택기 계약의 파일 선택기 내에 호스팅된 SkyDrive 앱

계약 구현

빠른 시작의 방법에 따라 파일 열기 선택기 계약을 앱과 신속하게 통합할 수 있습니다. 앱이 계약과 통합되면 그 다음 단계로 사용자가 선택 가능한 파일을 표시하도록 앱을 설정해야 합니다. 매니페스트에 파일 열기 선택기 계약을 추가한 후 Visual Studio 기본 템플릿을 사용하여 선택 보기를 구축할 수 있습니다. 이미 메인 앱에 보기를 구축했다면 구축된 보기를 선택 보기의 기본 항목으로 사용할 수 있습니다. 다음 그림에서 볼 수 있듯이 SkyDrive는 메인 앱의 기존 보기를 재사용합니다. 이렇게 하면 시간이 절약되고 메인 앱 보기와 일관성이 유지됩니다.

skydrive_view1비슷한 보기 및 탐색 모델을 제공하는 SkyDrive 앱

메인 앱과 호스팅된 앱 간에 비슷한 보기 및 탐색
모델을 제공하는 SkyDrive 앱

사용자가 앱에서 파일을 선택할 때 사용자에게 선택 메커니즘을 제공하는 작업도 중요한 과정입니다. 기본 HTML ListView 또는 XAML GridView 컨트롤을 사용하고 있다면 이미 컨트롤에서 선택 메커니즘과 시각적 요소가 결정되어 있습니다.

SkyDrive 앱의 시각적 요소 선택

SkyDrive 앱의 시각적 요소 선택

사용자가 파일을 선택하면 StorageFile이 파일 선택 바스켓에 표시되도록 파일 선택기에 전달해야 합니다. 개발자의 시나리오에 따라 로컬 기반 StorageFile을 사용할 수도 있고 URI 또는 스트림 기반 StorageFile을 사용할 수도 있습니다. URI 및 스트림 기반 StorageFile은 로컬 컴퓨터 이외의 위치에 있는 파일에 가장 적합합니다. 파일을 사용하는 앱이 해당 파일에 액세스할 때까지 파일 다운로드를 연기할 수 있기 때문입니다. 어떤 것을 사용할지는 앱 구현 방식에 달렸습니다. URI는 불간섭 방식이고 스트림 기반은 파일이 액세스될 때 파일 다운로드 방식을 구성할 수 있습니다. 예를 들어 URI를 통해 파일을 공개적으로 액세스할 수 없고 인증 양식이 필요한 경우 스트림 기반 솔루션은 필요한 자격 증명이 전달되도록 허용합니다. 다음은 파일 선택기 바스켓에 URI 기반 StorageFile을 추가하는 방법을 보여 주는 간단한 예입니다.

JavaScript

 // Create thumbnail for the file
var thumbnailSource = Windows.Storage.Streams.RandomAccessStreamReference.createFromUri(new Windows.Foundation.Uri(selectedItem.fileThumbnailUri));
// Add a file to the FileOpenPickerUI that is downloaded using BackgroundTransfer
Windows.Storage.StorageFile.createStreamedFileAsync(selectedItem.name, onDataRequested, thumbnailSource).done(function (streamedFile) {
   pickerUI.addFile(selectedItem.id, streamedFile);
});

function onDataRequested(outputStream) {
   var downloader = new Windows.Networking.BackgroundTransfer.BackgroundDownloader();
   var download = downloader.createDownload(new Windows.Foundation.Uri(selectedItem.fileUri), null);
   download.startAsync().done();
   var inputStream = download.getResultStreamAt(0);
   Windows.Storage.Streams.RandomAccessStream.copyAndCloseAsync(inputStream, outputStream).done(function () {
      inputStream.close();
   });
}

C#

 // Create thumbnail for the file
var thumbnailSource = RandomAccessStreamReference.CreateFromUri(new Uri(selectedItem.FileThumbnailUri));
// Add a file to the FileOpenPickerUI that is downloaded using BackgroundTransfer
StorageFile file = await StorageFile.CreateStreamedFileAsync(selectedItem.Name, OnDataRequested, thumbnailSource);
_openUI.AddFile(selectedItem.Id, file);

protected async void OnDataRequested(StreamedFileDataRequest outputStream)
{
   var downloader = new Windows.Networking.BackgroundTransfer.BackgroundDownloader();
   var download = downloader.CreateDownload(new Uri(_selectedItem.FileUri), null);
   var downloadTask = download.StartAsync();
   using (var inputStream = download.GetResultStreamAt(0))
   {
      await RandomAccessStream.CopyAndCloseAsync(inputStream, outputStream);
   }
   await downloadTask;
}

파일 선택 사용자 경험 구축

파일 열기 선택기 계약 구독에 있어 중요한 요소 중 하나는 파일 선택 기능에 충실하고 메인 앱의 디자인 및 특징과 일치하는 파일 선택 경험을 제공하는 것입니다. 파일 선택기에 대한 지침 및 검사 목록에는 파일 선택기 경험을 설계할 때 집중해야 할 주요 영역에 대한 설명이 나와 있습니다.

다음은 위의 지침에 따라 간단하게 선택 경험을 구현하는 방법입니다.

  • 명령: 파일 선택기에서는 앱 바가 지원되지 않기 때문에 Visual Studio 템플릿에서 제공하는 기본 명령 행을 사용합니다. 다음 다이어그램의 1번을 보시면 됩니다.
  • 탐색: 메인 앱에서 이미 사용하는 요소를 제공하여 탐색 모델을 일치시킵니다. 앱에서 현재 위치를 표시하는 방법과 일치하는 방법으로 제목 속성의 콘텐츠를 설정하는 것도 잊지 말아야 합니다. 아래 다이어그램의 2번을 보시면 됩니다.
  • 선택: 파일 선택기는 단일 선택과 다중 선택을 모두 지원합니다. SelectionMode 속성을 사용하여 앱에서 파일을 여러 개 선택하는 것을 허용할지 결정할 수 있습니다. 아래 다이어그램의 3번을 보시면 됩니다.
  • 보기 필터링: 사용자가 선택 가능한 파일 형식만 표시하도록 AllowedFileTypes 속성을 사용하여 보기를 필터링합니다.
  • 시작: SettingsIdentifier 속성을 사용하여 사용자가 앱에서 마지막으로 선택한 탐색 위치에서 앱을 다시 시작합니다.
  • 인증: 필요하다면 사용자가 메인 앱과 일치하는 방법으로 앱에 로그인할 수 있도록 허용합니다.
  • 구성: 콘텐츠 브라우징에 적합하도록 파일을 구성 및 표시합니다. 가급적 검색과 같은 무거운 어포던스보다는 시맨틱 줌과 가벼운 필터를 사용하는 것이 좋습니다.

파일 열기 선택기 계약을 구현하는 SkyDrive 앱의 사용자 인터페이스 개요

파일 열기 선택기 계약을 구현하는 SkyDrive 앱의 사용자 인터페이스 개요

전체 흐름

다음은 파일 선택기의 전체 흐름을 표시한 개요입니다. 이 다이어그램에서 파일 열기 선택기 계약을 구현한 앱(예: SkyDrive)에는 '앱 제공'이라고 표시되어 있습니다.

파일 선택기의 전체 흐름

시나리오 2: 파일 저장 선택기 계약

파일 저장 선택기 계약을 통해 개발자의 앱을 Windows 8 앱의 저장 위치로 사용할 수 있습니다. 예를 들어 SkyDrive 앱에 파일 저장 선택기 계약을 구현하면 다른 Windows 8 앱에서 SkyDrive에 직접 파일을 저장할 수 있습니다. 따라서 현재 사용 중인 앱에 계속 머무르면서 SkyDrive에 파일을 추가하고 SkyDrive 앱에서 액세스할 수 없는 파일(SkyDrive는 특정 앱이 파일 저장에 사용하는 위치에 액세스하지 못할 수 있음)을 SkyDrive에 배치할 수 있습니다.

앞서 언급했듯이 사용자가 같은 위치에서 파일을 선택하고 저장할 수 있도록 파일 열기 선택기 계약을 구현한 후 파일 저장 선택기 계약을 구현해야 합니다.

파일 저장 선택기 계약이 앱과 통합되면 파일 선택기의 저장 모드 내에서 앱을 시작하고 표시할 수 있습니다. 파일 선택기 메뉴 내에는 사용자가 언제라도 앱에서 지원하는 파일 형식을 저장할 수 있는 앱 진입점이 표시됩니다. 파일 열기 선택기 계약과 마찬가지로 파일 저장 선택기를 실행하면 파일 선택기의 보기 영역 내에 앱이 배치됩니다.

파일 저장 선택기 계약의 파일 선택기 내에 호스팅된 SkyDrive 앱

파일 저장 선택기 계약의 파일 선택기 내에 호스팅된 SkyDrive 앱

계약 구현

파일 열기 선택기 계약을 구현한 경험이 있으니 파일 저장 선택기 계약도 쉽게 구현할 수 있습니다. 두 계약은 매우 비슷한 빠른 시작 방법으로 구현할 수 있습니다. 첫 번째 단계로 사용자가 파일을 저장할 수 있는 위치를 표시하도록 앱을 설정해야 합니다. 파일 열기 선택기 계약에서 사용한 기본 보기를 재사용하면 시간이 절약되고 다른 앱 보기와 일관성을 유지할 수 있습니다. 사실 이 작업을 완료하는 가장 쉬운 방법은 파일 선택기 보기를 재사용하고 바스켓 코드를 제거하는 것입니다.

skydrive_documents

파일 저장 선택기의 메인 앱과 같은 보기를 사용하는 SkyDrive 앱

사용자가 파일을 저장하면, 즉 TargetFileRequested 이벤트가 발생하면 FileName 속성을 사용하여 파일 이름과 확장자가 앱에 맞는 형식인지 확인해야 합니다. 잘못된 형식이면 UX 지침과 일치하는 방식으로 사용자에게 오류를 표시할 수 있습니다. 올바른 형식이면 새 StorageFile을 생성하여 다시 파일 선택기로 보냅니다. 그러면 파일 선택기가 StorageFile을 앱으로 전달하고 앱에서는 콘텐츠를 씁니다(예: "파일 선택기" 앱). 다음은 이 개념을 보여 주는 간단한 코드입니다.

JavaScript

 function onTargetFileRequested (e) {
   var request = e.request;
   var deferral = e.request.getDeferral();
   if (doesfileExist(saveUI.fileName)) {
      var dialog = new Windows.UI.Popups.MessageDialog("The location already has a file named " + saveUI.fileName + ".", "Replace the existing file?");
      dialog.commands.append(new Windows.UI.Popups.UICommand("Replace", function () {
         createFileAndFinishRequest(request, deferral)
      }));
      dialog.commands.append(new Windows.UI.Popups.UICommand("Cancel", function () {
         // Cancel save by setting targetFile to null
         request.targetFile = null;
         deferral.complete();
      }));
      dialog.showAsync().done();
   } else {
      createFileAndFinishRequest(request, deferral);
   }
}
function createFileAndFinishRequest(request, deferral) {
   _currentLocalFolder.createFileAsync(saveUI.fileName, Windows.Storage.CreationCollisionOption.replaceExisting).done(function (newFile) {
      // Return the empty placeholder file so the calling app can add the file contents
      request.targetFile = newFile;
      deferral.complete();
   });
}

C#

 async void OnTargetFileRequested(FileSavePickerUI sender, TargetFileRequestedEventArgs args)
{
   var request = args.Request;
   var deferral = request.GetDeferral();
   if (DoesFileExist(_saveUI.FileName))
   {
      var dialog = new MessageDialog("The location already has a file named " + _saveUI.FileName + ".", "Replace the existing file?");
      dialog.Commands.Add(new UICommand("Replace", (command) =>
      {
         CreateFileAndFinishRequest(request, deferral);
      }));
      dialog.Commands.Add(new UICommand("Cancel", (command) =>
      {
         request.TargetFile = null;
         deferral.Complete();
      }));
      await dialog.ShowAsync();
   }
   else
   {
      CreateFileAndFinishRequest(request, deferral);
   }
}
async void CreateFileAndFinishRequest(TargetFileRequest request, TargetFileRequestDeferral deferral)
{
   request.TargetFile = await _currentFolder.CreateFileAsync(_fileSavePickerUI.FileName, CreationCollisionOption.ReplaceExisting);
   deferral.Complete();
}

파일 저장 사용자 경험 구축

파일 열기 선택기 계약과 마찬가지로, 파일 저장 선택기 계약 구독에 있어 중요한 요소 중 하나는 파일 선택 기능에 충실하고 메인 앱의 디자인 및 특징과 일치하는 파일 선택 경험을 제공하는 것입니다. 다음은 지침에 따라 파일 저장 선택기 계약 구현을 일치시키는 간단한 예입니다.

  • 필터 보기: 사용자가 파일 선택기의 파일 형식 목록에서 파일 형식을 변경하면, 즉 FileNameChanged 이벤트가 발생하면 선택된 파일 형식과 일치하는 파일만 표시하도록 보기를 업데이트합니다. 다음 다이어그램의 1번을 보시면 됩니다.
  • 오류 처리: 사용자가 저장하는 파일 이름, 파일 형식 및 위치가 올바른지 확인합니다. 올바르지 않으면 오류를 표시하고 사용자가 오류를 해결하도록 합니다. 메인 앱은 오류 지침에 따라 오류를 표시하게 됩니다. 따라서 메인 앱의 스타일 및 특징과 일치하는 방법으로 오류를 표시해야 합니다. 다음 다이어그램의 2번을 보시면 됩니다.
  • 파일 이름: 사용자가 저장 페이지에서 파일을 선택하면 TrySetFileName 메서드를 통해 파일 이름이 자동으로 채워집니다. 다음 다이어그램의 3번을 보시면 됩니다.

파일 저장 선택기 계약을 구현하는 SkyDrive 앱의 UX 개요

파일 저장 선택기 계약을 구현하는 SkyDrive 앱의 UX 개요

전체 흐름

다음은 파일 저장 선택기의 전체 흐름을 표시한 개요입니다. 파일 열기 선택기 다이어그램과 마찬가지로 파일 선택기 계약을 구현한 앱(예: SkyDrive)에는 '앱 제공'이라고 표시되어 있습니다.

파일 저장 선택기의 전체 흐름 개요

시나리오 3: 캐시된 파일 업데이트 프로그램 계약

캐시된 파일 업데이트 프로그램 계약을 구현하면 다른 Windows 8 앱에서 파일을 업데이트할 때 개발자의 앱에 저장된 파일도 같이 업데이트됩니다. 이것이 어떤 의미인지는 SkyDrive 앱을 통해 살펴보겠습니다. SkyDrive에 캐시된 파일 업데이트 프로그램 계약을 구현하면 SkyDrive에 있는 모든 파일이 최신 상태를 유지하고 모든 파일 변경 작업이 SkyDrive에 업로드됩니다. 제가 즐겨 찾는 사진 편집 앱으로 SkyDrive에 저장된 사진의 적목 현상을 제거한다고 가정해 보겠습니다. 저는 사진 편집 앱에서 파일 선택기를 열고 SkyDrive 앱에서 사진 하나를 선택합니다. 제가 적목 현상을 제거하면 사진 편집 앱이 변경 사항을 저장합니다. 캐시된 파일 업데이트 프로그램 계약을 통해 변경 사항이 자동으로 다시 SkyDrive에 전달됩니다. 파일이 제거되기 전에는 해당 파일의 모든 업데이트 작업이 SkyDrive에 전달됩니다. 변경 작업을 수동으로 SkyDrive에 내보내거나 업로드할 필요가 없습니다. 캐시된 파일 업데이트 프로그램 계약을 구현하면 SkyDrive의 파일을 언제나 최신 복사본이 들어 있고 언제든지 파일 업데이트가 가능한 로컬 PC의 파일처럼 사용할 수 있습니다.

이 계약의 주요 대상은 사용자가 주기적으로 파일을 저장하고 액세스하는 기본 저장 위치의 역할을 수행하는 앱입니다. 대부분의 앱에는 캐시된 파일 업데이트 프로그램 계약이 필요 없습니다. 이 계약은 엄청난 양의 상태 관리, 복잡한 데이터 흐름 처리, 충돌 해결 및 UI 작업이 필요하기 때문에 구현하기가 만만치 않습니다. 등급을 매긴다면 이 계약은 단연 고급으로 분류될 것입니다.

계약이 통합되면 개발자들이 유지 관리하는 파일을 새로 고치거나 업데이트해야 할 때마다 앱이 활성화됩니다(사용자에게 이를 표시할 필요는 없음). 이러한 목적으로 언제든지 앱을 활성화할 수 있지만 모든 앱 활성화는 사용자가 아닌 시스템을 통해 이루어집니다. 예를 들어 사용자가 개발자의 앱에서 서비스하는 파일에 데이터를 저장하면 변경 사항을 클라우드 서비스에 업로드하는 등의 적절한 파일 처리 작업을 수행할 수 있도록 시스템이 앱을 활성화합니다.

계약 구현

빠른 시작의 지침에 따라 캐시된 파일 업데이트 프로그램 계약을 구현할 수 있습니다. 앱에 계약을 구현하면 개발자가 서비스하는 파일의 변경 사항을 처리할 수 있도록 자동으로 활성화됩니다.

개발자는 어떤 StorageFiles를 유지 관리하는지 시스템에 알려야 합니다. setUpdateInformation 메서드를 사용하면 읽기/쓰기 권한을 설정하고 언제 어떤 방식으로 파일 서비스를 수행하도록 앱을 활성화할 것인지를 제어할 수 있습니다. 일반적으로 사용자가 파일 열기 선택기 계약을 사용하여 앱에서 선택하거나 파일 저장 선택기 계약을 사용하여 앱에 저장하는 모든 파일에 이 정보를 설정하는 것이 가장 좋습니다. 캐시된 파일 업데이트 프로그램 계약을 지원하는 C#, C++ 및 JavaScript 코드는 파일 선택기 계약 SDK 샘플에서 확인할 수 있습니다.

캐시된 파일 업데이트 프로그램 계약을 구현할 때 사용자에게 자격 증명을 요청하거나 파일을 서비스하기 전에 버전 충돌 문제를 해결해야 할 수도 있습니다. 이러한 경우 UI가 필요하다는 것을 시스템에 알리면 파일 선택기 내에서 앱이 시작됩니다.

skydrive_creds

캐시된 파일 업데이트 프로그램 작업에서 자격 증명을 요청하는 SkyDrive 앱

앱에서 설정하는 옵션 외에도 파일 업데이트 또는 저장을 요청하는 앱은 캐시된 파일 업데이트 프로그램 계약의 일부 흐름을 제어할 수 있습니다. 특히 호출 앱이 개발자의 앱에서 UI를 표시하지 못하게 차단하는 경우가 있습니다. 그리 자주 발생하는 상황은 아니지만 호출 앱이 파일을 새로 고치거나 저장해야 하는 경우 그리고 개발자의 앱이 요청을 완료하기 위해 UI를 표시해야 하는 경우 호출이 실패합니다.

전체 프로세스에 걸쳐 UIStatus 열거를 사용하여 현재 어떤 단계를 처리 중인지 확인할 수 있습니다.

새로 고침 및 저장 사용자 경험 구축

캐시된 파일 업데이트 프로그램 계약의 UI 부분이 제한적이긴 하지만 개발자의 앱이 아래의 지침과 일치하는지 확인해야 합니다.

  • UI 표시: 자격 증명, 파일 충돌 등 사용자 작업이 반드시 필요한 경우에만 UI를 요청합니다. 호출이 실패하면 호출 앱에 실패 사례를 반환하여 사용자에게 새로 고침 또는 저장이 실패했음을 알리도록 합니다. 그 외에도 필요하다면 메인 앱이 다음에 다시 시작될 때 메인 앱에만 "파일이 저장되었습니다" 같은 정보 메시지를 표시하고 파일 선택기 UI 또는 알림 같은 기타 UI 표면에는 메시지를 표시하지 않습니다.
  • 상태: 앱에서 처리하는 새로 고침이나 저장 작업의 양이 매우 많다면 메인 앱의 UI에 각 작업의 진행 상황을 표시하는 것을 고려해 볼 수 있습니다. 이를 통해 사용자는 진행 상황을 추적하고 문제를 해결할 수 있습니다.

전체 흐름

다음은 캐시된 파일 업데이트 프로그램의 전체 흐름을 표시한 개요입니다. 이전 다이어그램과 마찬가지로 파일 선택기 계약을 구현한 앱(예: SkyDrive)에는 '앱 제공'이라고 표시되어 있습니다.

캐시된 파일 업데이트 프로그램의 전체 흐름

결론

지금까지 파일 선택기 계약에 대해 설명하고 이를 통해 앱에 새로운 Windows 8 경험을 구축하는 방법을 보여 드렸습니다. 파일 열기 선택기 계약을 구현하면 사용자는 개발자의 앱에서 저장하고, 생성하고, 관리하는 파일을 다른 Windows 8 앱에서도 사용할 수 있습니다. 앱에 고급 기능을 더 많이 추가할수록 파일 저장 선택기 및 캐시된 파일 업데이트 프로그램 계약을 통해 개발자들은 보다 다양한 Windows 8 시나리오를 처리할 수 있게 됩니다.

다음은 꼭 기억해야 할 주의 사항입니다.

  • 파일 선택기 계약은 단계별로 구현하도록 설계되었습니다. 파일 열기 선택기 계약을 구현하고 파일 저장 선택기 계약을 구현한 후 필요에 따라 캐시된 파일 업데이트 프로그램 계약을 구현해야 합니다.
  • 앱의 특징을 일관적으로 유지해야 합니다. 사용자는 일반적인 앱 버전에 익숙합니다. 따라서 파일 선택기 내에서 호스팅되는 버전과 특징, 모양 및 느낌, 탐색 어포던스를 일치시켜야 합니다.
  • UX 지침을 따르면 앱의 특징을 유지하는 동시에 파일 선택기에서 제공하는 모든 어포던스를 사용할 수 있습니다. 이렇게 하면 사용자가 파일 선택기에서 개발자의 앱을 사용할 때 일관적이고 우수한 경험을 제공할 수 있습니다.

Windows 8의 파일 선택기 계약에 대한 자세한 내용은 다음 링크를 참조하거나 포럼에 질문을 남겨 주시기 바랍니다.

링크

유형

주요 내용

파일 선택기 계약에 대한 지침 및 검사 목록

UX 지침

파일 선택기 계약을 구현하기 위한 지침

빠른 시작: 파일 선택기 계약과 통합

빠른 시작

파일 선택기 계약을 앱과 통합하는 방법 설명

Windows.Storage.Pickers.Provider

API 참조

파일 선택기 및 파일 저장 선택기 계약에 대한 참조 문서

Windows.Storage.Provider 네임스페이스

API 참조

캐시된 파일 업데이트 프로그램 계약에 대한 참조 문서

파일 선택기 계약

코드 샘플

파일 선택기, 파일 저장 선택기 및 캐시된 파일 업데이트 프로그램 계약의 사용법 설명

감사합니다.

- Windows 사용자 경험 팀 수석 프로그램 관리자, Scott Hoogerwerf

도움을 주신 분들: Derek Gebhard