Windows 10 Geliştirme - Paylaşım Sözleşmesi

Bu bölümde, uygulamalar arasında verilerin nasıl paylaşılacağını öğreneceğiz. Kullanıcılar genellikle biriyle paylaşmaktan veya başka bir uygulamada kullanmaktan heyecan duydukları bilgilerle karşılaşırlar. Günümüzde kullanıcılar, diğer insanlarla bağlantı kurmak ve paylaşmak için teknolojiyi kullanmak istiyor.

Bir kullanıcı paylaşmak isteyebilir -

  • Sosyal ağlarıyla bir bağlantı
  • Bir resmi bir rapora kopyala
  • Bulut depolamaya bir dosya yükleyin

Günümüzde uygulamalar, kullandıkları verilerin aynı zamanda kullanıcıların paylaşması ve değiş tokuşu için kullanılabilir olmasını sağlamalıdır. Paylaş, UWP uygulamanıza eklenmesi kolay olan hafif bir özelliktir. Uygulamaların diğer uygulamalarla veri alışverişi yapmasının birkaç yolu vardır.

UWP uygulamalarında paylaşım özelliği aşağıdaki şekillerde desteklenebilir;

  • Birincisi, uygulama, kullanıcının paylaşmak istediği içeriği sağlayan bir kaynak uygulama olabilir.

  • İkincisi, uygulama, kullanıcının paylaşılan içerik için hedef olarak seçtiği bir hedef uygulama olabilir.

  • Bir uygulama aynı zamanda hem kaynak uygulama hem de hedef uygulama olabilir.

İçerik Paylaşımı

Kaynak uygulama olan bir uygulamadan içerik paylaşmak çok basittir. Herhangi bir paylaşım işlemini gerçekleştirmek için,DataPackagesınıf nesnesi. Bu nesne, kullanıcının paylaşmak istediği verileri içerir.

Aşağıdaki içerik türleri dahil edilebilir DataPackage nesne -

  • Düz metin
  • Tekdüzen Kaynak Tanımlayıcıları (URI'ler)
  • HTML
  • Biçimlendirilmiş metin
  • Bitmaps
  • Files
  • Geliştirici tanımlı veriler

Verileri paylaşırken, yukarıda belirtilen formatlardan bir veya daha fazlasını dahil edebilirsiniz. Uygulamanızda paylaşımı desteklemek için, öncelikleDataTransferManager sınıf.

Daha sonra her zaman çağrılan bir olay işleyicisi kaydedecektir. DataRequested olay meydana gelir.

DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView(); 
dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager, 
   DataRequestedEventArgs>(this.ShareTextHandler);

Uygulamanız bir DataRequest nesne, ardından uygulamanız kullanıcının paylaşmak istediği içeriği eklemeye hazırdır.

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!"); 
}

Uygulamanızın paylaştığı herhangi bir içerik iki özellik içermelidir -

  • Zorunlu olan ve ayarlanması gereken bir Başlık özelliği.
  • İçeriğin kendisi.

Paylaşılan İçeriği Alma

Uygulamanızın paylaşılan içeriği alabilmesini istiyorsanız, yapmanız gereken ilk şey, uygulamanızın Share Contract. Bildirimden sonra, sistem uygulamanızın içerik almasına izin verecektir.

Hisse Sözleşmesine destek eklemek için -

  • Çift tıklayın package.appmanifest dosya.

  • Şuraya git Declarationssekmesi. SeçShare Target -den Available Declarations listeye tıklayın ve Add buton.

  • Uygulamanızın herhangi bir dosyayı paylaşılan içerik olarak almasını istiyorsanız, dosya türlerini ve veri formatlarını belirtebilirsiniz.

  • Desteklediğiniz Veri Biçimlerini belirtmek için şu adrese gidin: Data Formats bölümü Declarations sayfa ve tıklayın Add New.

  • Desteklediğiniz veri formatının adını yazın. Örneğin,"Text".

  • Desteklediğiniz dosya türünü belirtmek için, Supported File Types bölümü Declarations sayfa, tıklayın Add New.

  • Desteklemek istediğiniz dosya adı uzantısını yazın, örn. .pdf

  • Desteklemek istiyorsan All file türleri, kontrol edin SupportsAnyFileType Kutu.

  • Bir kullanıcı uygulamanızı veri paylaşımı için hedef uygulama olarak seçtiğinde OnShareTargetActivated olay tetiklendi.

  • Uygulamanızın, kullanıcının paylaşmak istediği verileri işlemek için bu olayı işlemesi gerekir.

protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { 
   // Code to handle activation goes here.  
}
  • Kullanıcının herhangi bir uygulamayla paylaşmak istediği tüm veriler bir ShareOperationnesne. Ayrıca içerdiği verilerin formatını da kontrol edebilirsiniz.

Aşağıda verilen kod parçacığıdır. shared content düz metin biçiminde.

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

Bir web bağlantısını paylaşacak yeni bir UWP projesi oluşturarak basit bir örneğe bakalım.

Aşağıda, bazı özelliklerle bir düğmenin oluşturulduğu XAML kodu verilmiştir.

<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>

Düğme tıklama olayının uygulandığı C # kodu ve bir URI paylaşım kodu aşağıda verilmiştir.

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

Yukarıdaki kod derlenip çalıştırıldığında, emülatörde aşağıdaki sayfayı göreceksiniz.

Butona tıklandığında hangi uygulamada paylaşma seçenekleri sunulur.

Mesajlaşmaya tıklayın ve bağlantıyı herhangi birine gönderebileceğiniz aşağıdaki pencere görüntülenecektir.