텍스트를 받는 방법(HTML)
[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]
텍스트는 사용자가 공유하는 모든 데이터 서식 중에서 가장 일반적인 형식입니다. 상태 업데이트와 같은 콘텐츠에 대한 첫 번째 옵션인 동시에 링크, HTML 및 기타 정보를 공유하는 앱에 대한 권장 옵션입니다.
대상 앱을 작성할 때 일반적으로 텍스트를 공유의 일부로 지원해야 합니다. 그러면 사용자가 다양한 상황에서 개발자의 앱을 선택할 수 있습니다. 하지만 사용자에게 혼동만 준다고 생각될 경우에는 텍스트를 지원하지 마세요. 예를 들어 앱에서 주로 파일을 처리하는 경우에는 파일을 텍스트로 표현하는 것은 사용자의 기대를 충족하지 못합니다.
알아야 할 사항
기술
사전 요구 사항
- Visual Studio 및 관련 템플릿을 잘 알고 있어야 합니다.
- JavaScript에 대해 잘 알고 있어야 합니다.
지침
단계 1: 공유 계약 지원
앱이 공유 콘텐츠를 받을 수 있으려면 먼저 공유 계약을 지원한다고 선언해야 합니다. 기본적으로 이 계약을 통해 시스템에서 앱이 콘텐츠를 받을 수 있음을 확인합니다. Microsoft Visual Studio 템플릿을 사용하여 앱을 만드는 경우 공유 계약을 지원하는 방식은 다음과 같습니다.
- 매니페스트 파일(package.appxmanifest)을 엽니다.
- 선언 탭을 엽니다.
- 사용 가능한 선언 목록에서 공유 대상을 선택합니다.
- 추가를 클릭하여 앱에서 대상 공유 계약에 대한 지원을 추가합니다.
단계 2: 앱에서 텍스트를 지원하도록 지정
대상 앱을 작성하는 경우 파일 형식과 서식을 모두 지정할 수 있습니다. 지원하는 파일 형식을 지정하려면 다음을 수행합니다.
- 매니페스트 파일을 엽니다.
- 지원되는 파일 형식 섹션에서 새로 추가를 클릭합니다.
- .txt를 입력합니다. 마침표(.)를 "txt" 앞에만 포함해야 합니다.
텍스트를 데이터 서식으로 지원하도록 지정하려면 다음을 수행합니다.
- 매니페스트 파일을 엽니다.
- 데이터 서식 섹션에서 새로 추가를 클릭합니다.
- 따옴표 없이 "text"를 입력합니다.
이전 단계에서는 다음 섹션을 매니페스트에 추가합니다.
<Extensions>
<Extension Category="windows.shareTarget">
<ShareTarget>
<DataFormat>text</DataFormat>
</ShareTarget>
</Extension>
</Extensions>
참고 앱이 대상 공유 계약에 대해 활성화되면 다른 진입점을 지정할 수 있습니다. 이렇게 하려면 패키지 매니페스트에 있는 대상 공유 선언의 앱 설정 섹션에서 시작 페이지 항목을 수정합니다. 또한 이 페이지에 대한 활성화를 처리하는 별도의 JavaScript 파일을 사용하는 것이 좋습니다. 예제는 콘텐츠 공유 대상 앱 샘플(영문)을 참조하세요.
단계 3: 앱이 활성화되면 이를 검색하는 이벤트 처리기를 추가합니다.
사용자가 콘텐츠를 공유할 앱을 선택하면 시스템에서 해당 앱을 활성화합니다. 다양한 방법으로 앱을 활성화할 수 있기 때문에 활성화된 이유를 검색하는 코드를 추가해야 합니다. 이렇게 하려면 kind 속성의 값을 확인합니다.
app.onactivated = function (args) {
if (args.detail.kind === activation.ActivationKind.launch) {
// The application has been launched. Initialize as appropriate.
} else if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.shareTarget) {
...
}
};
단계 4: ShareOperation 개체를 가져옵니다.
ShareOperation 개체에는 앱이 사용자가 공유하려는 콘텐츠를 가져오는 데 필요한 모든 데이터가 포함되어 있습니다.
shareOperation = args.detail.shareOperation;
단계 5: 활성화된 이벤트 처리기에서 신속하게 반환합니다.
activated 이벤트 처리기에서 신속하게 반환해야 합니다. activated 이벤트 처리기에서 비동기 이벤트를 큐에 넣어 활성화된 이벤트가 반환된 후 데이터 공유 처리가 수행되도록 합니다.
WinJS.Application.addEventListener("shareready", shareReady, false);
WinJS.Application.queueEvent({ type: "shareready" });
나머지 단계에서는 shareReady
함수를 구현합니다.
단계 6: 데이터 공유에 텍스트가 포함되어 있는지 확인합니다.
shareOperation.data 속성에는 DataPackageView 개체가 포함되어 있습니다. 기본적으로 이 개체는 원본 앱이 데이터를 만드는 데 사용한 DataPackage 개체의 읽기 전용 버전입니다. 이 개체를 사용하여 공유 중인 콘텐츠를 텍스트 형식으로 사용할 수 있는지를 확인합니다.
if (shareOperation.data.contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.text)) {
// Code to process text goes here.
}
앱이 한 가지 형식만 지원하는 경우에도 DataPackage에 원하는 데이터 서식이 포함되어 있는지 확인하는 것이 좋습니다. 이렇게 하면 나중에 다른 데이터 서식을 쉽게 지원할 수 있습니다.
단계 7: 텍스트를 처리합니다.
텍스트를 가져오려면 DataPackageView.getText 메서드를 호출합니다.
shareOperation.data.getTextAsync().done(function (text) {
// To output the text using this example,
// you need a div tag with an id of "output" in your HTML file.
document.getElementById("output").innerText = text;
});
물론 텍스트 처리 방법은 앱에 따라 달라집니다.
단계 8: reportCompleted를 호출합니다.
앱이 콘텐츠 공유를 마치면 reportCompleted를 호출합니다. 이 메서드를 호출하면 시스템에서 앱을 종료합니다.
shareOperation.reportCompleted();
설명
콘텐츠 공유 대상 앱 샘플(영문) 코드 샘플에서 텍스트를 공유의 일부로 받는 앱의 전체 종단 간 환경을 확인해 보세요.
var shareOperation = null;
function shareReady(args) {
if (shareOperation.data.contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.text)) {
shareOperation.data.getTextAsync().done(function (textValue) {
// To output the text using this example, you need a div tag with an
// id of "output" in your HTML file.
document.getElementById("output").innerText = textValue;
});
}
}
app.onactivated = function (args) {
if (args.detail.kind === activation.ActivationKind.launch) {
// The application has been launched. Initialize as appropriate.
args.setPromise(WinJS.UI.processAll());
} else if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.shareTarget) {
// This app has been activated share.
args.setPromise(WinJS.UI.processAll());
// We receive the ShareOperation object as part of the eventArgs.
shareOperation = args.detail.shareOperation;
// We queue an asychronous event so that working with the ShareOperation object
// does not block or delay the return of the activation handler.
WinJS.Application.addEventListener("shareready", shareReady, false);
WinJS.Application.queueEvent({ type: "shareready" });
}
};
관련 항목
Windows.ApplicationModel.DataTransfer