사용자 지정 데이터 형식 만들기에 대한 지침

Applies to Windows and Windows Phone

사용자는 온라인으로 연결하여 다양한 정보를 공유합니다. 성공적인 앱에서는 사용자가 다른 사람과 공유할 가능성이 큰 정보 유형을 분석한 후 패키지로 만들어 수신 앱에서 올바르게 처리할 수 있도록 해 줍니다. 대부분의 경우 사용자가 공유하려는 정보는 Windows에서 지원하는 6개 표준 형식 중 하나에 속합니다. 하지만 다양한 대상 데이터 형식을 사용하여 사용자 환경을 개선할 수 있는 경우도 있습니다. 이러한 경우 개발자 앱에서 사용자 지정 데이터 형식을 지원할 수 있습니다.

예제

사용자 지정 형식을 만들 때 고려할 사항을 정확하게 이해하려면 다음 예제를 고려하세요.

Fabrikam이라는 가상 회사의 개발자가 온라인으로 저장된 파일을 공유하는 앱을 작성하고 있습니다. 한 가지 옵션은 스트림 기반 StorageItems를 사용하는 것입니다. 하지만 이 옵션을 사용하면 대상 앱이 파일을 로컬로 다운로드하여 읽게 되므로 시간이 많이 걸리고 비효율적일 수 있습니다. 대신 개발자는 이러한 파일 형식에 사용할 수 있는 사용자 지정 형식을 만들려고 합니다.

먼저 개발자는 새 형식의 정의를 고려합니다. 이 경우에는 온라인으로 저장되는 문서, 이미지, 등과 같은 파일 형식 모음입니다. 파일이 로컬 컴퓨터 대신 웹에 저장되므로 개발자는 형식의 이름을 WebFileItems로 지정합니다.

개발자는 형식에 대한 구체적인 사항과 다음을 결정해야 합니다.

  • 형식은 URI(Uniform Resource Identifier)를 나타내는 InspectableArray를 포함하는 IPropertyValue로 구성되어야 합니다.
  • 형식은 1개 이상의 항목을 포함해야 하지만 포함할 수 있는 항목의 개수에는 제한이 없습니다.
  • 모든 유효한 URI가 허용됩니다.
  • 원본 응용 프로그램의 경계(예: 인증된 URI)를 벗어나서 액세스할 수 없는 URI는 사용하지 않는 것이 좋습니다.

이 정보를 외부로 매핑하면 개발자가 사용자 지정 형식을 만들어 사용하는 데 필요한 충분한 정보가 제공됩니다.

내 앱에서 사용자 지정 형식을 사용해야 하나요?

Windows 8의 공유 기능은 다음과 같은 6가지 표준 데이터 형식을 지원합니다.

  • 텍스트
  • HTML
  • 비트맵
  • StorageItems
  • URI
  • RTF

이러한 형식은 다양하게 사용되며 앱에서 공유 및 공유 콘텐츠 수신을 빠르게 지원할 수 있도록 해줍니다. 이러한 형식은 수신 앱에 대해 풍부한 데이터 설명을 제공하지 못하는 단점이 있습니다. 이 점을 설명하려면 우편 주소를 나타내는 다음 문자열을 고려하세요.

1234 Main Street, New York, NY 98208

앱은 DataPackage.setText를 사용하여 이 문자열을 공유할 수 있습니다. 하지만 텍스트 문자열을 수신하는 앱은 문자열이 무엇을 나타내는지 알 수 없으므로 이 데이터에 대해 수행할 수 있는 작업이 제한됩니다. 원본 앱에서는 사용자 지정 데이터 형식을 사용하여 공유 중인 데이터를 http://schema.org/Place 형식을 사용하는 "위치"로 정의할 수 있습니다. 그러면 수신 앱에서 사용자가 기대하는 방식으로 정보를 처리하는 데 필요한 추가 정보가 제공됩니다. 기존 스키마 형식을 통해 앱은 정의된 형식의 더 큰 데이터베이스에 연결할 수 있습니다.

사용자 지정 형식을 사용하면 데이터를 보다 효율적으로 공유할 수 있습니다. 예를 들어 사용자가 Microsoft OneDrive에 저장된 사진 컬렉션을 소셜 네트워크를 통해 공유하려고 합니다. 이 경우 다음과 같은 몇 가지 이유로 인해 표준 형식을 사용하여 구현하는 것은 어려움이 있습니다.

  • URI 형식을 사용하면 항목을 한 번에 하나씩만 공유할 수 있습니다.
  • OneDrive는 컬렉션을 스트림 기반 StorageItems로 공유합니다. 이 경우에 StorageItems를 사용하려면 앱에서 각 사진을 다운로드한 다음 공유해야 합니다.
  • 텍스트와 HTML을 사용하여 링크 목록을 제공할 수 있지만 이러한 링크의 의미가 상실됩니다. 즉, 수신 앱에서 이러한 링크가 공유할 사진을 나타낸다는 사실을 알 수 없습니다.

기존 스키마 형식이나 사용자 지정 형식을 사용하여 사진을 공유하면 다음과 같은 두 가지 주요 이점이 있습니다.

  • 모든 이미지를 로컬로 다운로드하는 대신 URI 컬렉션을 만들 수 있기 때문에 사진을 더 빠르게 공유할 수 있습니다.
  • 수신 앱이 이러한 URI가 이미지를 나타낸다는 사실을 알고 적절하게 처리할 수 있습니다.

권장 사항 및 금지 사항

사용자 지정 형식 정의

앱에서 사용자 지정 형식을 정의하는 것이 좋을 경우 다음과 같은 몇 가지 사항을 고려해야 합니다.

  • 필요 없는 사용자 지정 형식을 만들지 않도록 표준 데이터 형식을 정확하게 이해해야 합니다. 시나리오에 적합한 기존 형식이 http://www.schema.org에 있는지 확인해야 합니다. 다른 앱에서는 사용자 지정 형식에 비해 기존 형식을 사용할 가능성이 더 많습니다. 즉, 더 많은 사용자층에서 원하는 종단 간 시나리오를 수행할 수 있습니다.
  • 사용할 환경을 고려합니다. 사용자가 수행할 작업과 해당 작업을 가장 잘 지원하는 데이터 형식을 고려해야 합니다.
  • 다른 앱 개발자가 사용자 지정 형식 정의를 사용할 수 있게 합니다.
  • 사용자 형식의 이름을 지정할 때 이름의 형식의 내용과 일치하는지 확인합니다. 예를 들어 UriCollection은 모든 URI가 유효하다는 것을 나타내고, WebImageCollection은 온라인 이미지를 가리키는 URI만 포함함을 나타냅니다.
  • 형식의 의미를 신중하게 고려하세요. 형식이 나타내는 의미와 사용 방법을 정확하게 이해해야 합니다.
  • 형식의 구조를 검토하세요. 형식이 여러 항목 또는 직렬화를 지원하는지 여부와 형식에 적용되는 제한 사항을 충분히 고려합니다.
  • 게시한 후에는 사용자 지정 형식을 변경하지 마세요. 사용자 지정 형식은 API: 요소처럼 추가되거나 사용되지 않을 수 있지만 이전 버전과 호환되고 장기적으로 지원되어야 합니다.
  • 여러 형식을 조합하여 사용하지 마세요. 예를 들어 한 가지 형식이 표시되면 앱에서 필요한 두 번째 형식을 자동으로 찾을 것으로 기대하지 마세요. 각 형식은 독립적으로 사용됩니다.

앱에 사용자 지정 형식 추가

사용자 지정 형식을 정의한 후 앱에 형식을 추가할 때 다음과 같은 권장 사항을 따르세요.

  • 다른 앱에서 형식을 테스트합니다. 원본 앱에서 대상 앱으로 데이터가 올바르게 처리되는지 확인합니다.
  • 형식의 의도된 목적을 준수합니다. 형식을 의도하지 않은 방식으로 사용하지 마세요.
  • 원본 앱을 작성 중인 경우 하나 이상의 표준 형식도 제공하세요. 그러면 사용자 지정 형식을 지원하지 않는 앱과 데이터를 공유할 수 있습니다. 환경이 사용자에게 적합하지 않을 수도 있지만 원하는 앱과 데이터를 공유하지 못하는 것보다는 좋습니다. 또한 다른 응용 프로그램에서 해당 형식을 채택할 수 있도록 형식을 온라인으로 문서화해야 합니다.
  • 대상 앱을 작성 중인 경우 하나 이상의 표준 형식을 지원하는 것이 좋습니다. 그러면 원본 앱에서 개발자가 원하는 사용자 지정 형식을 사용하지 않더라도 개발자 앱에서 원본 앱의 데이터를 수신할 수 있습니다.
  • 다른 앱의 특정 사용자 지정 형식, 특히 다른 회사의 형식을 사용하려면 온라인에서 공개적으로 문서화되어 있는지 확인해야 합니다. 문서화되지 않은 형식은 예고 없이 변경될 가능성이 많아 일관성이 없게 되거나 앱을 손상시킬 수 있습니다.

추가 사용법 지침

데이터 형식 선택

사용자 지정 형식을 정의할 때 결정해야 할 가장 중요한 것 중 하나는 원본 응용 프로그램과 대상 응용 프로그램 사이에 사용자 지정 형식을 전송하는 데 사용되는 WinRT 데이터 형식입니다. DataPackage 클래스는 사용자 지정 형식에 대한 다양한 데이터 형식을 지원합니다.

형식을 정의할 때 해당 데이터에 적합한 형식을 선택하세요. 이 형식의 모든 소비자와 받는 사람은 다른 옵션을 사용하더라도 동일한 데이터 형식을 사용해야 합니다. 그렇지 않으면 대상 응용 프로그램에서 예기치 않은 데이터 형식 불일치 오류가 발생할 수 있습니다.

문자열을 사용자 형식에 대한 데이터 형식으로 선택한 경우 GetTextAsync 함수의 GetTextAsync(formatId) 양식을 사용하여 대상 측에서 문자열을 검색할 수 있습니다. 이 함수는 데이터 형식 검사를 자동으로 수행합니다. 그렇지 않으면 GetDataAsync를 사용하여 잠재적인 데이터 형식 불일치로부터 보호해야 합니다. 예를 들어 원본 응용 프로그램에서 단일 URI를 제공하지만 대상 응용 프로그램에서 RUI 모음으로 검색하려고 시도할 경우 불일치가 발생합니다. 이러한 충돌을 방지하려면 다음과 같은 코드를 추가할 수 있습니다.

DataPackage 채우기


var uris = new Array();
uris[0] = new Windows.Foundation.Uri("http://www.msn.com");
uris[1] = new Windows.Foundation.Uri("http://www.microsoft.com");
var dp = new Windows.ApplicationModel.DataTransfer.DataPackage();
dp.setData("UriCollection", uris);


데이터 검색


if (dpView.contains("UriCollection")) {
    dpView.getDataAsync("UriCollection").done(function(uris) {
        // Array.isArray doesn’t work – uris is projected from InspectableArray
        if (uris.toString() === "[object ObjectArray]") {
            var validUriArray = true;
            for (var i = 0; (true === validUriArray) && (i < uris.length); i++) {
                validUriArray = (uris[i] instanceof Windows.Foundation.Uri);
            }
            if (validUriArray) {
                // Type validated data 
            }
        }
    }
}


관련 항목

개발자용(HTML)
공유할 데이터 형식 선택
Quickstart: Sharing content
Quickstart: Receiving shared content
개발자용(XAML)
공유할 데이터 형식 선택
Quickstart: Sharing content
공유 콘텐츠 받기
샘플
콘텐츠 공유 원본 앱 샘플
콘텐츠 공유 대상 앱 샘플

 

 

표시:
© 2014 Microsoft