Windows 10 개발-공유 계약
이 장에서는 애플리케이션간에 데이터를 공유하는 방법을 배웁니다. 사용자는 종종 누군가와 공유하거나 다른 응용 프로그램에서 사용하고 싶은 정보를 접하게됩니다. 오늘날 사용자는 기술을 사용하여 다른 사람들과 연결하고 공유하기를 원합니다.
사용자는 공유를 원할 수 있습니다-
- 소셜 네트워크와의 연결
- 보고서에 사진 복사
- 클라우드 스토리지에 파일 업로드
오늘날 애플리케이션은 사용하는 데이터를 사용자가 공유하고 교환 할 수 있도록해야합니다. 공유는 UWP 애플리케이션에 쉽게 추가 할 수있는 간단한 기능입니다. 앱이 다른 앱과 데이터를 교환하는 방법에는 여러 가지가 있습니다.
UWP 애플리케이션에서 공유 기능은 다음과 같은 방식으로 지원 될 수 있습니다.
첫째, 애플리케이션은 사용자가 공유하고자하는 콘텐츠를 제공하는 소스 앱이 될 수 있습니다.
둘째, 앱은 사용자가 공유 콘텐츠의 대상으로 선택한 대상 앱이 될 수 있습니다.
앱은 소스 앱과 대상 앱이 될 수도 있습니다.
콘텐츠 공유
소스 앱인 애플리케이션에서 콘텐츠를 공유하는 것은 매우 간단합니다. 공유 작업을 수행하려면DataPackage클래스 개체. 이 개체에는 사용자가 공유하려는 데이터가 포함되어 있습니다.
다음 유형의 콘텐츠를 포함 할 수 있습니다. DataPackage 객체-
- 일반 텍스트
- URI (Uniform Resource Identifier)
- HTML
- 서식있는 텍스트
- Bitmaps
- Files
- 개발자 정의 데이터
데이터를 공유하는 동안 위에서 언급 한 형식 중 하나 이상을 포함 할 수 있습니다. 애플리케이션에서 공유를 지원하려면 먼저DataTransferManager 수업.
그런 다음 언제든지 호출되는 이벤트 핸들러를 등록합니다. DataRequested 이벤트가 발생합니다.
DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView();
dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager,
DataRequestedEventArgs>(this.ShareTextHandler);
앱이 DataRequest 개체가 있으면 응용 프로그램이 사용자가 공유하려는 콘텐츠를 추가 할 준비가 된 것입니다.
private void ShareTextHandler(DataTransferManager sender, DataRequestedEventArgs e){
DataRequest request = e.Request;
// The Title is mandatory
request.Data.Properties.Title = "Share Text Example";
request.Data.Properties.Description = "A demonstration that shows how to share text.";
request.Data.SetText("Hello World!");
}
응용 프로그램이 공유하는 모든 콘텐츠에는 두 가지 속성이 있어야합니다.
- 필수이며 설정해야하는 제목 속성입니다.
- 내용 자체.
공유 컨텐츠 받기
애플리케이션이 공유 콘텐츠를 수신 할 수 있도록하려면 먼저해야 할 일은 애플리케이션이 Share Contract. 선언 후 시스템은 귀하의 애플리케이션이 콘텐츠를 수신 할 수 있도록합니다.
주식 계약에 대한 지원을 추가하려면-
더블 클릭 package.appmanifest 파일.
다음으로 이동 Declarations탭. 고르다Share Target ~로부터 Available Declarations 목록을 클릭하고 Add 단추.
응용 프로그램이 모든 종류의 파일을 공유 콘텐츠로 수신하도록하려면 파일 유형과 데이터 형식을 지정할 수 있습니다.
지원하는 데이터 형식을 지정하려면 Data Formats 섹션의 Declarations 페이지 및 클릭 Add New.
지원하는 데이터 형식의 이름을 입력하십시오. 예를 들면"Text".
지원하는 파일 형식을 지정하려면 Supported File Types 섹션 Declarations 페이지, 클릭 Add New.
지원할 파일 이름 확장명을 입력합니다. 예 : .pdf
지원하고 싶다면 All file 유형, 확인 SupportsAnyFileType 상자.
사용자가 데이터 공유를위한 대상 응용 프로그램으로 응용 프로그램을 선택하면 OnShareTargetActivated 이벤트가 시작됩니다.
사용자가 공유하려는 데이터를 처리하려면 앱에서이 이벤트를 처리해야합니다.
protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) {
// Code to handle activation goes here.
}
사용자가 응용 프로그램과 공유하려는 모든 데이터는 ShareOperation목적. 포함 된 데이터의 형식을 확인할 수도 있습니다.
다음은 처리하는 코드 스 니펫입니다. shared content 일반 텍스트 형식으로.
ShareOperation shareOperation = args.ShareOperation;
if (shareOperation.Data.Contains(StandardDataFormats.Text)) {
string text = await shareOperation.Data.GetTextAsync();
// To output the text from this example, you need a TextBlock control
// with a name of "sharedContent".
sharedContent.Text = "Text: " + text;
}
웹 링크를 공유 할 새 UWP 프로젝트를 만들어 간단한 예를 살펴 보겠습니다.
다음은 일부 속성으로 단추가 생성되는 XAML 코드입니다.
<Page
x:Class = "UWPSharingDemo.MainPage"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local = "using:UWPSharingDemo"
xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable = "d">
<Grid Background = "{ThemeResource ApplicationPageBackgroundThemeBrush}">
<StackPanel Orientation = "Vertical">
<TextBlock Text = "Share Web Link" Style = "{StaticResource
HeaderTextBlockStyle}" Margin = "30"></TextBlock>
<Button Content = "Invoke share contract" Margin = "10"
Name = "InvokeShareContractButton" Click = "InvokeShareContractButton_Click"
></Button>
</StackPanel>
</Grid>
</Page>
버튼 클릭 이벤트가 구현 된 C # 코드와 URI 공유 코드는 아래와 같습니다.
using System;
using Windows.ApplicationModel.DataTransfer;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
// The Blank Page item template is documented at
http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
namespace UWPSharingDemo {
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainPage : Page {
DataTransferManager dataTransferManager;
public MainPage() {
this.InitializeComponent();
dataTransferManager = DataTransferManager.GetForCurrentView();
dataTransferManager.DataRequested += dataTransferManager_DataRequested;
}
void dataTransferManager_DataRequested(DataTransferManager sender,
DataRequestedEventArgs args) {
Uri sharedWebLink = new Uri("https://msdn.microsoft.com");
if (sharedWebLink != null) {
DataPackage dataPackage = args.Request.Data;
dataPackage.Properties.Title = "Sharing MSDN link";
dataPackage.Properties.Description = "The Microsoft Developer Network (MSDN)
is designed to help developers write applications using Microsoft
products and technologies.";
dataPackage.SetWebLink(sharedWebLink);
}
}
private void InvokeShareContractButton_Click(object sender, RoutedEventArgs e) {
DataTransferManager.ShowShareUI();
}
}
}
위의 코드가 컴파일되고 실행되면 에뮬레이터에 다음 페이지가 표시됩니다.
버튼을 클릭하면 어떤 응용 프로그램에서 공유 할 수있는 옵션이 제공됩니다.
메시지를 클릭하면 누구에게나 링크를 보낼 수있는 다음 창이 표시됩니다.