공유할 데이터 형식 선택(HTML)

[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]

사용자가 콘텐츠를 공유할 수 있도록 도와주는 원본 앱을 작성하는지, 아니면 해당 콘텐츠를 받는 대상 앱을 작성하는지에 관계없이 지원할 데이터 형식과 파일 형식을 고려해야 합니다. 여기서는 Windows.ApplicationModel.DataTransfer 네임스페이스가 지원하는 표준 형식 및 표준 형식이 적용되지 않는 경우 사용자 지정 형식을 만들고 사용하는 방법에 대해 설명합니다.

원본 앱의 데이터 형식 선택

원본 앱을 작성할 경우 하나의 데이터 형식이나 파일 형식으로 제한되지 않습니다. 특정 형식이 다른 형식보다 더 적합해 보일지라도 동일한 데이터를 다른 형식으로 제공하면 사용자가 원하는 대상 앱을 사용하여 콘텐츠를 공유할 수 있도록 하는 데 도움이 됩니다. 예를 들어 사용자가 웹 페이지의 서식 있는 텍스트를 공유하려는 경우 모든 대상 앱이 서식 있는 텍스트를 지원하지는 않기 때문에 콘텐츠의 일반 텍스트 버전도 제공해야 할 수 있습니다.

참고  추가로 지원하는 형식의 수는 사용자가 공유할 수 있는 콘텐츠의 형식에 따라 다릅니다. 콘텐츠가 무엇이고 사용자가 이 콘텐츠를 공유할 때 기대하는 것이 무엇인지 고려하는 것이 중요합니다. 예를 들어 서식 있는 텍스트의 일반 텍스트 버전을 만드는 것은 대부분의 경우 적절합니다. 그러나 이 텍스트가 포함된 웹 페이지의 링크를 만드는 것은 사용자가 기대하는 것이 아닐 수 있습니다.

 

시나리오 예: 사용자가 읽으려는 기사를 앱에서 공유하려고 합니다. 웹에서 콘텐츠를 사용할 수 있는 경우 먼저 기사에 대한 링크를 포함합니다. 또한 원본으로 돌아가는 링크와 함께 기사의 요약 내용도 HTML 형식 및 텍스트 형식으로 포함해야 합니다.

시나리오 예: 사용자가 기사에서 선택한 내용을 앱에서 공유하려고 합니다. 이 경우 HTML 형식이 사용자의 의도를 가장 정확하게 반영합니다. 사용자가 선택한 내용의 텍스트 버전도 포함해야 합니다. 이 작업에 권장되는 방법은 MSApp.createDataPackageFromSelection을 사용하는 것입니다.

이 표는 원본 앱으로 지원해야 하는 형식을 결정하는 데 도움이 될 수 있습니다.

앱에서 지원하는 주 데이터 형식 권장되는 주 DataPackage 형식 추가 권장 사항
서식 없는 일반 텍스트 텍스트 WebLink(텍스트가 웹 페이지 링크인 경우)
링크 WebLink 텍스트
서식 있는 콘텐츠/HTML HTML

텍스트(콘텐츠에 텍스트만 포함되어 있는 경우)

WebLink(콘텐츠가 링크인 경우)

파일 StorageItems
단일 이미지 StorageItems
여러 파일 및 이미지 StorageItems

 

표준 형식보다 구체적인 형식을 지정하려는 경우를 위해 사용자 지정 형식도 지원합니다. 이러한 사용자 지정 형식은 http://www.schema.org에 있는 것과 같은 표준 데이터 스키마를 기반으로 하거나 앱에 고유한 사용자 정의 형식일 수 있습니다.

대상 앱의 데이터 형식 선택

대상 앱에서는 가능한 한 많은 형식을 지원하는 것이 좋습니다. 이렇게 하면 사용자가 공유할 때마다 앱을 옵션으로 사용할 수 있습니다. 그러나 원본 앱과 마찬가지로 특정 데이터 형식을 받지 않으려는 경우 해당 형식을 지원할 필요가 없습니다. 예를 들어 텍스트만 허용하는 앱은 비트맵을 지원한다고 등록하면 안 됩니다.

지원해야 하는 형식에 대한 몇 가지 권장 사항은 다음과 같습니다.

앱에서 지원하는 주 데이터 형식 권장되는 주 DataPackage 형식 추가 권장 사항
서식 없는 일반 텍스트 텍스트
링크 WebLink 텍스트
서식 있는 콘텐츠/HTML HTML

텍스트

WebLink

파일 StorageItems
단일 이미지 StorageItems
여러 파일 및 이미지 StorageItems
특정 파일 형식(예제: .docx) 특정 파일 이름 확장명이 포함된 StorageItems

 

앱이 여러 형식을 지원할 수 있고 모든 형식이 공유되는 콘텐츠에 있는 경우 앱에 가장 관련된 형식만 처리하는 것이 좋습니다. 예를 들어 앱이 링크를 공유하고 링크와 일부 텍스트가 둘 다 포함된 공유 콘텐츠를 받는 경우 앱에서 링크만 처리해야 합니다.

표준 형식이 제공하는 것보다 많은 정보가 포함된 데이터를 받는 것이 앱에 유용한 경우도 있습니다. 예를 들어 라이브러리 앱은 텍스트를 받지만 해당 텍스트에 책 정보가 포함된 경우에만 받는 것이 좋습니다. 이런 경우에 사용자 지정 형식이 지원됩니다. 이러한 사용자 지정 형식은 http://www.schema.org에 있는 것과 같은 표준 데이터 스키마를 기반으로 하거나 앱에 고유한 사용자 정의 형식일 수 있습니다.

스키마 기반 형식 사용

원본 앱이나 대상 앱으로 공유하려는 데이터가 표준 형식이 제공하는 것보다 구체적인 경우가 많습니다. 예를 들어 영화 관련 앱은 영화 정보를 공유하고 제목, 등급, 감독 등의 세부 정보를 원할 수 있습니다. 책 관련 앱은 저자, 제목, 발행 날짜 등의 책 정보를 공유할 수 있습니다. 앱이 이러한 범주에 해당하는 경우 http://www.schema.org에 나열된 많은 스키마 중 하나를 지원하는 것이 좋습니다.

이러한 스키마 중 하나를 사용하여 데이터를 공유하려는 경우 공유 방법은 다음과 같습니다.

  1. 사용자가 공유하려는 항목(책, 영화 등)을 식별합니다.
  2. 항목과 관련된 정보를 수집하고 JSON(JavaScript Object Notation) 개체로 패키지합니다.
  3. setData를 사용하여 DataPackage에 콘텐츠를 추가합니다. 이 경우 형식 ID를 포함해야 합니다. 우선은 http://schema.org/<schema>를 ID로 사용합니다. 예를 들면 http://schema.org/Book입니다.

이 예에서는 사용자 지정 형식으로 데이터를 공유하는 방법을 보여 줍니다.

var book = {
    "type" : "http://schema.org/Book",
    "properties" : 
    {
         "image" : "http://sourceurl.com/catcher-in-the-rye-book-cover.jpg",
         "name" : "The Catcher in the Rye",
         "bookFormat" : "http://schema.org/Paperback",
         "author" : "http://sourceurl.com/author/jd_salinger.html",
         "numberOfPages" : 224,
         "publisher" : "Little, Brown, and Company",
         "datePublished" : "1991-05-01",
         "inLanguage" : "English",
         "isbn" : "0316769487"
    }
};
book = JSON.stringify(book);

function shareCustomData() {
    var dataTransferManager = Windows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView();
    dataTransferManager.addEventListener("datarequested", function (e) {
        var request = e.request;
        request.data.setData("http://schema.org/Book", book);
    });
}

여기서는 DataPackage에 단일 데이터 형식만 포함합니다. 이렇게 하면 사용자가 선택한 대상 앱이 예상 결과를 알 수 있습니다.

이러한 스키마 중 하나를 사용하는 데이터를 받으려는 경우 다음 단계를 수행해야 합니다.

  1. 패키지 매니페스트를 편집하여 앱이 공유 대상임을 선언합니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 빠른 시작을 참조하세요.
  2. 패키지 매니페스트에 앱이 지원하는 스키마를 식별하는 데이터 형식을 추가합니다. http://schema.org/<schema>를 데이터 형식으로 사용합니다. 예를 들면 http://schema.org/Book입니다.
  3. getDataAsync를 사용하여 공유 작업 중에 받은 DataPackageView 개체에서 콘텐츠를 가져옵니다.

이 예에서는 사용자 지정 형식으로 공유된 데이터를 받는 방법을 보여 줍니다.

if (shareOperation.data.contains("http://schema.org/Book")) {
    shareOperation.data.getTextAsync(("http://schema.org/Book").done(function (customFormatString) {
        var customFormatObject = JSON.parse(customFormatString);
        if (customFormatObject) {
            // This sample expects the custom format to be of type http://schema.org/Book
            if (customFormatObject.type === "http://schema.org/Book") {
                customFormatString = "Type: " + customFormatObject.type;
                if (customFormatObject.properties) {
                    customFormatString += "\nImage: " 
                            + customFormatObject.properties.image
                            + "\nName: " + customFormatObject.properties.name
                            + "\nBook Format: " + customFormatObject.properties.bookFormat
                            + "\nAuthor: " + customFormatObject.properties.author
                            + "\nNumber of Pages: " + customFormatObject.properties.numberOfPages
                            + "\nPublisher: " + customFormatObject.properties.publisher
                            + "\nDate Published: " + customFormatObject.properties.datePublished
                            + "\nIn Language: " + customFormatObject.properties.inLanguage
                            + "\nISBN: " + customFormatObject.properties.isbn;
                }
            }
        }
    });
}

사용자 지정 형식 사용

http://schema.org/docs/full.htm에서 앱의 요구를 충족하는 스키마를 찾을 수 없으면 사용자 지정 형식을 직접 만들 수도 있습니다. 이 경우 다음 몇 가지 사항을 기억해야 합니다.

  • 사용자 지정 형식의 이름이 중요합니다. 원본 앱과 대상 앱에서 모두 동일한 이름을 사용해야 합니다.
  • 형식을 게시해야 합니다. 이렇게 하면 형식을 사용하려는 개발자가 콘텐츠를 어떤 방식으로 패키지에 포함해야 하는지 알 수 있습니다.

이러한 내용 및 기타 고려 사항에 대해서는 사용자 지정 데이터 형식 만들기에 대한 지침에서 자세히 설명합니다.

관련 항목

콘텐츠 공유 원본 앱 샘플

콘텐츠 공유 대상 앱 샘플

빠른 시작: 콘텐츠 공유

빠른 시작: 공유 콘텐츠 받기