빠른 시작: 콘텐츠 공유(HTML)

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

성공적인 앱에서는 사용자가 작업 내용을 친구 및 가족과 손쉽게 공유할 수 있습니다. 사용자가 쉽게 콘텐츠를 공유할 수 있는 앱은 대체로 인지도가 증가하고 사용자가 더 자주 앱을 사용하게 됩니다.

이러한 API의 사용 방법을 알아보려면 다음을 참조하세요. 앱이 공유 콘텐츠를 받을 수 있는 방법을 알아보려면 빠른 시작: 공유 콘텐츠 받기를 참조하세요.

목표: 이 빠른 시작을 읽으면 콘텐츠를 공유하는 방법을 이해하게 됩니다.

사전 요구 사항

  • Visual Studio 및 해당 템플릿을 잘 알고 있어야 합니다.
  • HTML과 JavaScript를 사용한 개발에 익숙해야 합니다.

지침

데이터 서식 선택

모든 공유 작업의 핵심은 DataPackage 개체입니다. 이 개체에는 사용자가 공유하려는 데이터가 포함되어 있습니다. DataPackage에 포함될 수 있는 콘텐츠 형식은 다음과 같습니다.

  • 일반 텍스트
  • URI(Uniform Resource Identifier)
  • HTML
  • 서식 있는 텍스트
  • 비트맵
  • 파일
  • 개발자 정의 데이터

DataPackage 개체에는 하나 이상의 이러한 형식이 임의 조합으로 포함될 수 있습니다. 또한 DataPackage에는 수신 앱이 데이터를 요청할 때 호출되는 함수인 대리자가 포함될 수 있습니다. 사용자가 공유하려는 데이터가 리소스를 많이 사용하는 경우 항상 대리자를 사용하는 것이 좋습니다. 대리자를 사용하면 앱이 보다 효율적으로 데이터를 공유할 수 있습니다.

속성 선택

공유할 데이터를 패키지로 만들 경우 공유할 내용에 대한 추가 정보를 제공하는 다양한 속성을 제공할 수 있습니다. 이러한 속성을 활용하면 대상 앱의 사용자 경험을 향상할 수 있습니다. 예를 들어 사용자가 공유하는 항목이 무엇인지를 전달하는 제목과 설명을 제공하면 사용자가 둘 이상의 앱과 내용을 공유할 때 도움이 될 수 있습니다. 이미지나 웹 페이지 링크를 공유할 때 미리 보기를 추가하면 사용자에게 시각적 참조를 제공할 수 있습니다. 사용할 수 있는 속성에 대한 자세한 내용은 DataPackage.DataPackagePropertySet에 대한 설명서를 참조하세요.

공유 소스 설정

응용 프로그램을 공유 소스 앱으로 설정하려면 먼저 현재 창에 할당된 DataTransferManager 클래스 인스턴스를 가져와야 합니다.

var dataTransferManager = Windows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView();

이 클래스는 사용자가 공유를 호출할 때 실행되는 DataRequested 이벤트를 지원합니다. Windows 스토어 앱에서는 사용자가 공유 참 메뉴를 호출하면 자동으로 실행됩니다. Windows Phone용으로 개발하는 경우에는 기본 제공 공유 참 메뉴가 없으므로 사용자가 처리기를 탭하여 트리거하는 컨트롤을 추가해야 합니다.

dataTransferManager.addEventListener("datarequested", function (e) {
    // Code to handle event goes here.
});

위의 JavaScript 예제에서는 datarequested 이벤트가 발생할 때마다 호출되는 이벤트 처리기를 등록합니다. 이 처리기는 앱에서 사용자가 공유 소스 앱에서 공유하려는 데이터를 설정하는 데 사용하는 DataRequest 개체를 받습니다.

공유하는 모든 콘텐츠에는 두 가지 속성, 즉 제목과 콘텐츠 자체가 포함되어 있어야 합니다. 또한 보다 명확히 하기 위해 설명 속성도 포함하는 것이 좋습니다.

다음 코드는 이전 예를 기반으로 하며 일반 텍스트를 대상 앱과 공유하는 방법을 보여 줍니다.

function registerForShare() {
    var dataTransferManager = Windows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView();
    dataTransferManager.addEventListener("datarequested", shareTextHandler);
}

function shareTextHandler(e) {
    var request = e.request;
    request.data.properties.title = "Share Text Example";
    request.data.properties.description = "Demonstrates how to share text.";
    request.data.setText("Hello World!");
}

공유 및 대리자

경우에 따라 사용자가 공유를 호출할 때 데이터를 바로 준비하지 않는 것이 좋습니다. 예를 들어 앱이 여러 가지 데이터 서식을 지원하는 경우 모든 서식을 즉시 만드는 것은 비효율적입니다. 대상 앱이 원하는 형식을 지정할 때까지 기다린 다음 요청한 데이터만 생성하는 것이 더 좋습니다. 이렇게 하려면 요청 시 대리자 호출을 통해 필요한 데이터만 채우도록 DataPackage 개체를 구성합니다.

request.data.setDataProvider(Windows.ApplicationModel.DataTransfer.StandardDataFormats.bitmap, onDeferredImageRequested);

이 유형의 공유에 대한 자세한 내용은 파일을 공유하는 방법을 참조하세요.

프로그래밍 방식으로 공유 창 호출

공유할 콘텐츠를 설정했으면 이제 준비가 완료되었습니다. 사용자는 콘텐츠를 받는 앱을 선택하기만 하면 됩니다. 게임의 최고 점수 공유 등 참 메뉴 사용이 적합하지 않은 경우에는 프로그래밍 방식으로 공유 참 메뉴를 시작할 수도 있습니다.

참고  

Windows Phone 8.1에는 Charms bar가 없으므로 프로그래밍 방식으로 공유 옵션을 포함해야 합니다. 앱 바의 일부로 항상 액세스하거나 특정 페이지의 특정 컨트롤과 연결할 수 있습니다.

function showShareUI() {
    Windows.ApplicationModel.DataTransfer.DataTransferManager.showShareUI();
}

오류 및 기타 문제 처리

대부분의 경우 콘텐츠 제공은 간단한 프로세스입니다. 그러나 앱에서 공유할 수 없는 경우가 있습니다. 이러한 상황을 처리할 수 있도록 Windows 8.1의 DataRequest 개체는 FailWithDisplayText 메서드를 지원합니다. 사용자가 특정 보기에서 공유할 수 없거나 공유하기 전에 추가 단계를 수행해야 하는 경우 이 메서드를 사용하여 사용자에게 문자 메시지를 표시합니다. 예를 들어 앱에서 사용자가 공유할 콘텐츠를 선택해야 하지만 아무것도 선택하지 않았을 수 있습니다.

요약 및 다음 단계

지금까지 작업 내용을 공유하는 방법을 알아보았습니다.

자세히 알아보거나 앱에 공유를 추가하는 방법의 구체적인 예제를 보려면 다음을 확인하세요.

관련 항목

공유할 데이터 형식 선택

콘텐츠 공유에 대한 지침 및 검사 목록

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