Windows 10-Entwicklung - Freigabevertrag

In diesem Kapitel erfahren Sie, wie Sie Daten zwischen Anwendungen austauschen. Benutzer stoßen häufig auf Informationen, die sie gerne mit anderen teilen oder in einer anderen Anwendung verwenden möchten. Heutzutage möchten Benutzer Technologie verwenden, um sich mit anderen Menschen zu verbinden und zu teilen.

Ein Benutzer möchte möglicherweise teilen -

  • Eine Verbindung zu ihrem sozialen Netzwerk
  • Kopieren Sie ein Bild in einen Bericht
  • Laden Sie eine Datei in den Cloud-Speicher hoch

Anwendungen müssen heute sicherstellen, dass die von ihnen verwendeten Daten auch für Benutzer zum Teilen und Austauschen verfügbar sind. Share ist eine einfache Funktion, die einfach zu Ihrer UWP-Anwendung hinzugefügt werden kann. Es gibt verschiedene Möglichkeiten für die Apps, Daten mit anderen Apps auszutauschen.

In UWP-Anwendungen kann die Freigabefunktion auf folgende Weise unterstützt werden:

  • Erstens kann die Anwendung eine Quell-App sein, die Inhalte bereitstellt, die der Benutzer freigeben möchte.

  • Zweitens kann die App eine Ziel-App sein, die der Benutzer als Ziel für freigegebene Inhalte auswählt.

  • Eine App kann auch sowohl eine Quell-App als auch eine Ziel-App sein.

Inhalte teilen

Das Teilen von Inhalten aus einer Anwendung, bei der es sich um eine Quell-App handelt, ist sehr einfach. Um einen Freigabevorgang auszuführen, benötigen Sie dieDataPackageKlassenobjekt. Dieses Objekt enthält die Daten, die der Benutzer teilen möchte.

Die folgenden Arten von Inhalten können in enthalten sein DataPackage Objekt -

  • Klartext
  • Uniform Resource Identifiers (URIs)
  • HTML
  • Formatierter Text
  • Bitmaps
  • Files
  • Vom Entwickler definierte Daten

Während Sie Daten austauschen, können Sie eines oder mehrere der oben genannten Formate angeben. Um die Freigabe in Ihrer Anwendung zu unterstützen, müssen Sie zuerst die Instanz von abrufenDataTransferManager Klasse.

Anschließend wird ein Ereignishandler registriert, der immer dann aufgerufen wird, wenn a DataRequested Ereignis tritt ein.

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

Wenn Ihre App eine erhält DataRequest Objekt, dann ist Ihre Anwendung bereit, den Inhalt hinzuzufügen, den der Benutzer teilen möchte.

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

Alle Inhalte, die Ihre Anwendung gemeinsam nutzt, müssen zwei Eigenschaften enthalten:

  • Eine Title-Eigenschaft, die obligatorisch ist und festgelegt werden muss.
  • Der Inhalt selbst.

Gemeinsame Inhalte empfangen

Wenn Sie möchten, dass Ihre Anwendung freigegebenen Inhalt empfangen kann, müssen Sie zunächst erklären, dass sie das unterstützt Share Contract. Nach der Deklaration lässt das System Ihre Anwendung verfügbar, um Inhalte zu empfangen.

Unterstützung des Aktienvertrags hinzufügen -

  • Doppelklicken Sie auf die package.appmanifest Datei.

  • Gehe zum DeclarationsTab. WählenShare Target von dem Available Declarations Liste und klicken Sie auf die Add Taste.

  • Wenn Ihre Anwendung jede Art von Datei als freigegebenen Inhalt erhalten soll, können Sie die Dateitypen und Datenformate angeben.

  • Um die von Ihnen unterstützten Datenformate anzugeben, gehen Sie zu Data Formats Abschnitt der Declarations Seite und klicken Add New.

  • Geben Sie den Namen des von Ihnen unterstützten Datenformats ein. Zum Beispiel,"Text".

  • Um den von Ihnen unterstützten Dateityp anzugeben, klicken Sie auf Supported File Types Abschnitt der Declarations Seite, klicken Sie Add New.

  • Geben Sie die Dateinamenerweiterung ein, die Sie unterstützen möchten, z. .pdf

  • Wenn Sie unterstützen möchten All file Typen, überprüfen Sie die SupportsAnyFileType Box.

  • Wenn ein Benutzer Ihre Anwendung als Zielanwendung für die gemeinsame Nutzung von Daten auswählt OnShareTargetActivated Ereignis wird ausgelöst.

  • Ihre App muss dieses Ereignis verarbeiten, um die Daten zu verarbeiten, die der Benutzer freigeben möchte.

protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { 
   // Code to handle activation goes here.  
}
  • Alle Daten, die der Benutzer mit einer Anwendung teilen möchte, sind in a enthalten ShareOperationObjekt. Sie können auch das Format der darin enthaltenen Daten überprüfen.

Im Folgenden finden Sie das Code-Snippet, das verarbeitet wird shared content im Klartextformat.

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

Schauen wir uns ein einfaches Beispiel an, indem wir ein neues UWP-Projekt erstellen, das einen Weblink gemeinsam nutzt.

Im Folgenden ist der XAML-Code angegeben, in dem eine Schaltfläche mit einigen Eigenschaften erstellt wird.

<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 # -Code, in dem ein Ereignis mit Schaltflächenklick implementiert ist, und ein URI-Freigabecode sind unten angegeben.

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

Wenn der obige Code kompiliert und ausgeführt wird, wird die folgende Seite des Emulators angezeigt.

Wenn Sie auf die Schaltfläche klicken, erhalten Sie die Optionen zum Teilen für welche Anwendung.

Klicken Sie auf Messaging. Das folgende Fenster wird angezeigt, von dem aus Sie den Link an jeden senden können.