Développement Windows 10 - Contrat de partage

Dans ce chapitre, nous allons apprendre à partager des données entre des applications. Les utilisateurs trouvent souvent des informations qu'ils sont ravis de partager avec quelqu'un ou de les utiliser dans une autre application. De nos jours, les utilisateurs souhaitent utiliser la technologie pour se connecter et partager avec d'autres personnes.

Un utilisateur peut souhaiter partager -

  • Un lien avec leur réseau social
  • Copier une image dans un rapport
  • Télécharger un fichier sur le stockage cloud

Les applications d'aujourd'hui doivent s'assurer que les données qu'elles utilisent sont également disponibles pour que les utilisateurs puissent les partager et les échanger. Le partage est une fonctionnalité légère, facile à ajouter à votre application UWP. Il existe plusieurs façons pour les applications d'échanger des données avec d'autres applications.

Dans les applications UWP, la fonction de partage peut être prise en charge des manières suivantes;

  • Premièrement, l'application peut être une application source qui fournit du contenu que l'utilisateur souhaite partager.

  • Deuxièmement, l'application peut être une application cible que l'utilisateur sélectionne comme destination pour le contenu partagé.

  • Une application peut également être à la fois une application source et une application cible.

Partage de contenu

Partager du contenu à partir d'une application, qui est une application source, est très simple. Pour effectuer toute opération de partage, vous aurez besoin duDataPackageobjet de classe. Cet objet contient les données que l'utilisateur souhaite partager.

Les types de contenu suivants peuvent être inclus dans DataPackage objet -

  • Texte brut
  • Identificateurs de ressources uniformes (URI)
  • HTML
  • Texte formaté
  • Bitmaps
  • Files
  • Données définies par le développeur

Lors du partage de données, vous pouvez inclure un ou plusieurs des formats mentionnés ci-dessus. Pour prendre en charge le partage dans votre application, vous devez d'abord obtenir l'instance duDataTransferManager classe.

Il enregistrera ensuite un gestionnaire d'événements qui est appelé chaque fois qu'un DataRequested l'événement se produit.

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

Lorsque votre application reçoit un DataRequest objet, votre application est prête à ajouter le contenu que l'utilisateur souhaite partager.

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

Tout contenu que votre application partage doit contenir deux propriétés -

  • Une propriété Title, qui est obligatoire et doit être définie.
  • Le contenu lui-même.

Recevoir du contenu partagé

Si vous souhaitez que votre application puisse recevoir du contenu partagé, la première chose à faire est de déclarer qu'elle prend en charge le Share Contract. Après la déclaration, le système permettra à votre application d'être disponible pour recevoir du contenu.

Pour ajouter la prise en charge du contrat de partage -

  • Double-cliquez sur le package.appmanifest fichier.

  • Aller au Declarationslanguette. ChoisirShare Target du Available Declarations liste, et cliquez sur le Add bouton.

  • Si vous souhaitez que votre application reçoive tout type de fichier en tant que contenu partagé, vous pouvez spécifier les types de fichiers et les formats de données.

  • Pour spécifier les formats de données que vous prenez en charge, accédez à la Data Formats section, de la Declarations page et cliquez sur Add New.

  • Tapez le nom du format de données que vous prenez en charge. Par exemple,"Text".

  • Pour spécifier le type de fichier que vous prenez en charge, dans le Supported File Types section de la Declarations page, cliquez sur Add New.

  • Tapez l'extension de nom de fichier que vous souhaitez prendre en charge, par exemple, .pdf

  • Si vous souhaitez soutenir All file types, vérifiez le SupportsAnyFileType boîte.

  • Lorsqu'un utilisateur sélectionne votre application comme application cible pour le partage de données, OnShareTargetActivated l'événement est déclenché.

  • Votre application doit gérer cet événement pour traiter les données que l'utilisateur souhaite partager.

protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { 
   // Code to handle activation goes here.  
}
  • Toutes les données que l'utilisateur souhaite partager avec n'importe quelle application sont contenues dans un ShareOperationobjet. Vous pouvez également vérifier le format des données qu'il contient.

Ci-dessous, l'extrait de code qui gère shared content au format texte brut.

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

Prenons un exemple simple en créant un nouveau projet UWP, qui partagera un lien Web.

Vous trouverez ci-dessous le code XAML dans lequel un bouton est créé avec certaines propriétés.

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

Code C # dans lequel l'événement de clic de bouton est implémenté et un code de partage d'URI est donné ci-dessous.

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

Lorsque le code ci-dessus est compilé et exécuté, vous verrez la page suivante sur l'émulateur.

Lorsque le bouton est cliqué, il donnera les options à partager sur quelle application.

Cliquez sur la messagerie et la fenêtre suivante s'affichera à partir de laquelle vous pourrez envoyer le lien à n'importe qui.