Langage: HTML | XAML

Démarrage rapide : réception de contenu partagé (XAML)

Applies to Windows and Windows Phone

Ce démarrage rapide vous guide à travers les étapes nécessaires pour que votre application puisse recevoir du contenu partagé d’une autre application.

Objectif: Découvrir le processus de réception du contenu partagé.

Prérequis

  • Vous devez être familiarisé avec Visual Studio et ses modèles.
  • Vous devez être familiarisé avec le développement en C#/C++.

Instructions

Prise en charge du contrat de partage

Avant que votre application puisse recevoir un contenu partagé, vous devez déclarer qu’elle prend en charge le contrat de partage. Ce contrat indique au système que votre application est apte à recevoir du contenu. Si vous utilisez un modèle Visual Studio pour créer votre application, voici comment prendre en charge le contrat de partage :

  1. Ouvrez le fichier manifeste. Il doit normalement porter un nom similaire à package.appxmanifest.
  2. Ouvrez l’onglet Déclarations.
  3. Choisissez Cible du partage dans la liste Déclarations disponibles, puis cliquez sur Ajouter.

Spécification des types de fichiers et formats de données à prendre en charge

En tant que développeur de l’application cible, vous devez déterminer pour quels types de fichiers et formats de données vous souhaitez fournir une prise en charge. Pour spécifier les types de fichiers à prendre en charge :

  1. Ouvrez le fichier manifeste. Il doit normalement porter un nom similaire à package.appxmanifest.
  2. Dans la section Types de fichiers pris en charge de la page Déclarations, cliquez sur Ajouter nouveau.
  3. Tapez l’extension de nom de fichier associée au type de fichiers à prendre en charge. Par exemple, .docx. Vous devez inclure le point (.).

Pour prendre en charge tous les types de fichiers, activez la case à cocher Prend en charge tout type de fichier.

Pour spécifier les formats de données à prendre en charge :

  1. Ouvrez le fichier manifeste.
  2. Dans la section Formats de données de la page Déclarations, cliquez sur Ajouter nouveau.
  3. Tapez le nom du format de données à prendre en charge. Par exemple, « Texte ».

Les API de partage prennent en charge plusieurs formats standard, parmi lesquels les formats texte, HTML et bitmap. Vous pouvez également spécifier des types de fichiers et formats de données personnalisés. Dans ce cas, veillez à ce que les applications sources connaissent ces types et formats afin qu’elles puissent les utiliser pour partager des données.

Ajout des espaces de noms DataTransfer

Vous devez ajouter les espaces de noms appropriés à votre application afin de pouvoir gérer les événements d’activation du partage, et créer et traiter les objets associés au partage. Pour une application cible, vous avez besoin des espaces de noms Windows.ApplicationModel.Activation, Windows.ApplicationModel.DataTransfer et Windows.ApplicationModel.DataTransfer.ShareTarget :


using Windows.ApplicationModel.Activation;
using Windows.ApplicationModel.DataTransfer;
using Windows.ApplicationModel.DataTransfer.ShareTarget;


Gestion de l’activation du partage

Lorsqu’un utilisateur choisit votre application (généralement en la sélectionnant dans une liste d’applications cibles disponibles affichée dans l’interface utilisateur de partage), un événement Application.OnShareTargetActivated est déclenché. Votre application doit gérer cet événement afin de traiter les données que l’utilisateur veut partager.


protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args)
{
    // Code to handle activation goes here.	
}

Remarque  

Si votre application s’exécute quand elle est activée en tant que cible de partage, l’instance existante de votre application est arrêtée et une nouvelle instance de votre application est lancée pour gérer le contrat.


void App::OnShareTargetActivated(ShareTargetActivatedEventArgs^ args)
{
    // Code to handle activation goes here.	
}

Les données que l’utilisateur souhaite partager sont stockées dans un objet ShareOperation. Vous pouvez utiliser cet objet pour vérifier le format des données qu’il contient. Voici l’exemple d’un gestionnaire d’événements qui gère du contenu partagé 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;
}


Notification sur l’état du partage étendu (pour les opérations plus longues)

  • Applies to Windows Phone

Remarque  

L’étape suivante ne concerne que les applications du Windows Store. Vous pouvez appeler les méthodes de rapport ci-après à partir de Windows Phone 8.1, mais toutes les données ne seront pas retournées.

Dans certains cas, votre application peut avoir besoin de plus de temps pour traiter les données à partager. C’est ce que nous appelons des « partages étendus ». Il s’agit, par exemple, des partages de collections de fichiers ou d’images. Ces éléments sont plus volumineux qu’une simple chaîne de texte, ce qui explique leur temps de traitement plus long.

Remarque  Si vous envisagez de partager uniquement des éléments simples, tels que du texte ou des liens hypertexte, vous pouvez ignorer cette section.

Utilisée en tant qu’application cible, votre application ne doit pas obliger l’utilisateur à rester dans l’interface utilisateur de partage en attendant qu’elle termine le traitement des données. Pour éviter cela, utilisez l’objet ShareOperation afin qu’il notifie au système que votre application n’a pas terminé l’opération de partage en cours. L’utilisateur peut ainsi masquer l’interface utilisateur de partage et poursuivre ses autres tâches. Pendant ce temps, votre application continue le traitement des données en arrière-plan.


shareOperation.ReportStarted();


Après l’appel de la méthode ReportStarted, ne prévoyez aucune interaction avec votre application de la part de l’utilisateur. Par conséquent, vous ne devez appeler cette méthode que si votre application est parvenue à un stade de l’opération où elle peut être masquée par l’utilisateur.

Avec un partage étendu, l’utilisateur peut être amené à masquer l’application source avant que votre application n’ait reçu toutes les données de l’objet DataPackage. Pour cette raison, nous recommandons que votre application avertisse le système quand elle a obtenu toutes les données nécessaires. Cela permet au système de suspendre ou d’arrêter l’application source selon les besoins.


shareOperation.ReportDataRetreived();

Il est également conseillé que le système soit averti quand vous utilisez les classes Windows.Networking.BackgroundTransfer classes pour télécharger votre contenu. Vous pouvez le faire à l’aide de la méthode ReportSubmittedBackgroundTask.


shareOperation.ReportSubmittedBackgroundTask();

Vous pouvez également appeler ReportError pour envoyer un message d’erreur au système en cas de problème. L’utilisateur voit le message quand il vérifie l’état du partage. À ce stade, votre application est arrêtée et le partage est terminé —l’utilisateur doit tout recommencer pour partager le contenu dans votre application. Selon la situation, vous pouvez décider qu’un certain type d’erreur ne suffit pas pour mettre fin à l’opération de partage. Dans ce cas, vous pouvez omettre d’appeler ReportError et continuer le partage.


shareOperation.ReportError("Could not reach the server! Try again later.");

Lorsque vous appelez ces méthodes, vous le faites généralement selon l’ordre indiqué, une seule fois chacune. Toutefois, certaines fois une application cible peut appeler ReportDataRetrieved avant ReportStarted. Par exemple, l’application peut récupérer les données comme partie d’une tâche dans le gestionnaire d’activation, mais ne pas appeler ReportStarted jusqu’à ce que l’utilisateur clique sur un bouton Partager.

Pour obtenir un exemple concret de partage, voir notre exemple de partage de contenu cible entre applications.

Notification de la fin du partage

Enfin, lorsque votre application a fini de traiter le contenu partagé, appelez la méthode ReportCompleted qui notifie au système la fin de l’opération.


shareOperation.ReportCompleted();

Une fois que votre application sait que le partage est terminé, elle est masquée.

Renvoi d’un objet Quicklink si le partage a réussi

  • Applies to Windows Phone

Remarque  

Les liens rapides ne sont pas pris en charge dans Windows Phone 8.1. Les applications du Windows Phone Store peuvent recevoir des liens rapides dans le cadre d’une opération de partage, mais ceux-ci sont automatiquement ignorés.

Quand un utilisateur sélectionne votre application pour recevoir du contenu partagé, nous vous recommandons de créer un objet QuickLink. Un objet QuickLink est une sorte de raccourci qui permet à l’utilisateur de partager plus facilement des informations avec votre application. Par exemple, votre application peut créer un objet QuickLink qui ouvre un nouveau message électronique dans lequel l’adresse de messagerie du destinataire est déjà indiquée.

Un objet QuickLink doit comporter un titre, une icône et un identificateur. Le titre (par exemple, « Message pour maman ») et l’icône s’affichent lorsque l’utilisateur appuie sur l’icône Partager. L’identificateur est utilisé par l’application pour accéder à des informations personnalisées, telles qu’une adresse de messagerie ou des informations d’identification. Quand votre application crée un objet QuickLink, elle renvoie cet objet QuickLink au système en appelant la méthode ReportCompleted de l’objet ShareOperation. Voici un exemple :


async void ReportCompleted(ShareOperation shareOperation, string quickLinkId, string quickLinkTitle)
{
    QuickLink quickLinkInfo = new QuickLink
    {
        Id = quickLinkId,
        Title = quickLinkTitle,

        // For quicklinks, the supported FileTypes and DataFormats are set 
        // independently from the manifest
        SupportedFileTypes = { "*" },
        SupportedDataFormats = { StandardDataFormats.Text, StandardDataFormats.Uri, 
                StandardDataFormats.Bitmap, StandardDataFormats.StorageItems }
    };

    StorageFile iconFile = await Windows.ApplicationModel.Package.Current.InstalledLocation.CreateFileAsync(
            "assets\\user.png", CreationCollisionOption.OpenIfExists);
    quickLinkInfo.Thumbnail = RandomAccessStreamReference.CreateFromFile(iconFile);
    shareOperation.ReportCompleted(quickLinkInfo);
}


Souvenez-vous que votre application stocke l’identificateur de l’objet QuickLink ainsi que les données utilisateur correspondantes. Lorsque l’utilisateur appuie sur l’objet QuickLink, vous pouvez obtenir l’identificateur de cet objet à l’aide de la propriété QuickLinkId de l’objet ShareOperation.

Récapitulatif et étapes suivantes

Vous avez désormais les connaissances de base sur le processus de réception du contenu partagé et sur la création d’un objet QuickLink permettant aux utilisateurs de partager plus facilement du contenu avec votre application.

Pour en savoir plus ou pour obtenir des exemples plus précis sur la façon d’ajouter la fonctionnalité de partage à votre application, vous pouvez consulter les sections suivantes :

Remarque  Déboguer une application de partage cible est différent de déboguer d’autres types d’applications. Pour en savoir plus, voir Recommandations pour le débogage d’applications cibles.

Rubriques associées

Sélection des formats de données pour le partage
Recommandations et liste de vérification sur le partage de contenu
Démarrage rapide : partage de contenu

 

 

Afficher:
© 2014 Microsoft