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(); 
      }
		
   } 
}

위의 코드가 컴파일되고 실행되면 에뮬레이터에 다음 페이지가 표시됩니다.

버튼을 클릭하면 어떤 응용 프로그램에서 공유 할 수있는 옵션이 제공됩니다.

메시지를 클릭하면 누구에게나 링크를 보낼 수있는 다음 창이 표시됩니다.