2017-01-27 1 views
1

UWP에서 전자 북 리더 앱을 개발할 계획입니다. 하지만 스토리지 개념을 구현하는 데 약간의 격렬한 태도가 있습니다. 그래서 나는 다음과 같은 것을 보관하고 싶다.UWP의 맞춤 라이브러리

  • 사용자는 전자 책 라이브러리로 맞춤 폴더를 설정할 수 있습니다. 이 폴더에는 모든 전자 책이 포함됩니다 (지금까지 아무런 문제가 없음).
  • Groove에서와 마찬가지로 전자 북을 "스트리밍"(일시적으로 다운로드)하거나 영구적으로 다운로드 할 수 있습니다.

    는 일반적으로 사용자가 동기화 ondrive 폴더를해야합니다 :이 잘 작동하지만 데스크톱에 관해서 문제가있는 모바일 플랫폼의

. 따라서 폴더는 영구적으로 사용할 수 있습니다. ondrive api를 사용하면 앱에서이 폴더를 알지 못하고 사용하지 못할 것입니다. 동일한 캐싱 알고리즘을 사용하면 중복이 발생할 수 있습니다.

내가 함께 온 해결 방법은 파일 트리에서 폴더를 수동으로 선택하고 로컬에 저장하지 말라고 데스크톱에서 사용자에게 요청하는 것입니다. 그러나 사용자가 전자 서적 라이브러리를 동기화하지 않기로 결정하면 문제가 발생할 수 있습니다.

그래서 "저장하는"방법이 있습니까?

+0

당신이 함께 확인하실 수 있습니다 응용 프로그램 로컬 저장소? https://msdn.microsoft.com/en-us/windows/uwp/app-settings/store-and-retrieve-app-data#retrieve-the-local-app-data-store –

+0

이 옵션을 사용할 수 없습니다. 아직, 나는 그것을 논평으로 줄 것이다. 곧 https://github.com/Microsoft/UWPCommunityToolkit에는 OneDrive와 상호 작용할 수있는 기능이 있습니다 (https://github.com/Microsoft/UWPCommunityToolkit/pull/595 참조) – Brad

답변

0

내 의견에서 언급 한 툴킷이 출시되었습니다.

는 요약 this blog post를 참조하십시오

원 드라이브 서비스를. 간소화 된 API 모델 (StorageFolder와 유사)을 사용하여 새로운 OneDrive 서비스를 통해 사용자 파일을 로밍하십시오. 새로운 서비스를 사용하면 툴킷 서비스에서 기대했던 것과 동일한 일관된 방식으로 OneDrive 사용자 등을 쉽게 인증 할 수 있습니다.

또는 직접 documentation으로 이동하여 UWP 앱의 기능을 활용하는 방법을 확인할 수 있습니다.

간단한에서

, 당신은 사용하여 현재 사용자의 원 드라이브의 루트에 액세스 할 수 있습니다

var folder = await OneDriveService.Instance.RootFolderAsync(); 

가 파일의 내용을 다운로드의 예는 다음과 같습니다

var remoteFile=await parentFolder.GetFile("File.docx"); 

using (var remoteStream = await remoteFile.OpenAsync()) 
{ 
    byte[] buffer = new byte[remoteStream.Size]; 
    var localBuffer = await remoteStream.ReadAsync(buffer.AsBuffer(), (uint)remoteStream.Size, InputStreamOptions.ReadAhead); 
    var localFolder = ApplicationData.Current.LocalFolder; 
    var myLocalFile = await localFolder.CreateFileAsync($"{oneDriveFile.Name}", CreationCollisionOption.GenerateUniqueName); 
    using (var localStream = await myLocalFile.OpenAsync(FileAccessMode.ReadWrite)) 
    { 
     await localStream.WriteAsync(localBuffer); 
     await localStream.FlushAsync(); 
    } 
} 
1

OneDrive API을 사용하여 파일을 저장하고 동기화 및 원격 연결 문제를 해결하기 위해 남겨 두지 않는 이유는 무엇입니까?