Créer des activités utilisateur dans des applications SDK d'application Windows

Les activités utilisateur représentent les tâches qu’un utilisateur effectue dans votre application. Vous créez des activités pour permettre aux utilisateurs de reprendre là où ils se sont arrêtés. Les activités apparaissent dans l’historique d’activité local et peuvent être mises en avant par des fonctionnalités de Windows qui aident les utilisateurs à reprendre des tâches précédentes.

Note

La synchronisation de Timeline dans le cloud a été abandonnée en juillet 2021. Les activités utilisateur créées par votre application sont stockées localement et ne sont plus synchronisées entre les appareils via Microsoft Graph Chronologie. L’historique des activités locales sur l’appareil fonctionne toujours.

Prerequisites

  • Votre application doit être empaquetée (MSIX) ou avoir une identité de package.
  • Aucune déclaration de fonctionnalité spéciale n’est requise : l’API UserActivity est disponible pour toutes les applications empaquetées.

Créer une activité utilisateur

Utilisez les classes UserActivityChannel et UserActivity :

using Windows.ApplicationModel.UserActivities;

private UserActivitySession? _currentSession;

private async Task CreateActivityAsync()
{
    var channel = UserActivityChannel.GetDefault();
    var activity = await channel.GetOrCreateUserActivityAsync("document-123");

    activity.ActivationUri = new Uri("myapp://open?doc=123");
    activity.VisualElements.DisplayText = "Quarterly Report";
    activity.VisualElements.Description = "Working on Q4 financial summary";

    await activity.SaveAsync();
    _currentSession = activity.CreateSession();
}

La session d’activité signale que l’utilisateur est actuellement engagé avec cette tâche. Supprimez-le lorsque l’utilisateur bascule vers une autre tâche.

Définir des détails visuels riches

Utilisez les propriétés sur UserActivityVisualElements pour décrire l’activité à l’utilisateur :

UserActivity activity = new UserActivity("quarterly-report");

activity.VisualElements.DisplayText = "Quarterly Report";
activity.VisualElements.Description = "Last edited: Section 3 - Revenue Analysis";
activity.VisualElements.Attribution = new UserActivityAttribution(
    new Uri("ms-appx:///Assets/AppIcon.png"));

Note

AdaptiveCardBuilder (Windows.UI.Shell) vous permettent d’afficher une carte adaptative complète comme visuel d’une activité, mais cette surface faisait partie de Windows Timeline, que Microsoft a abandonné. N’utilisez AdaptiveCardBuilder pas dans le nouveau code : utilisez plutôt les VisualElements propriétés indiquées ci-dessus.

Gérer l’activation depuis une activité

Lorsque l’utilisateur sélectionne une activité à reprendre, votre application est activée avec un URI de protocole. Gérez-le dans votre logique d’activation :

var activatedArgs = AppInstance.GetCurrent().GetActivatedEventArgs();

if (activatedArgs.Kind == ExtendedActivationKind.Protocol)
{
    var protocolArgs = activatedArgs.Data as Windows.ApplicationModel.Activation.IProtocolActivatedEventArgs;
    if (protocolArgs?.Uri.Scheme == "myapp")
    {
        // Parse the query string manually; System.Web.HttpUtility isn't
        // available to apps that target .NET (as opposed to .NET Framework).
        string? docId = protocolArgs.Uri.Query
            .TrimStart('?')
            .Split('&', StringSplitOptions.RemoveEmptyEntries)
            .Select(pair => pair.Split('=', 2))
            .FirstOrDefault(pair => pair[0] == "doc")
            ?.ElementAtOrDefault(1);
        // Navigate to the document
    }
}

Terminer la session

Lorsque l’utilisateur cesse de travailler sur l’activité, supprimez la session :

UserActivitySession? _currentSession = null;

_currentSession?.Dispose();
_currentSession = null;

Bonnes pratiques

  • Utilisez des ID d’activité significatifs : l’ID doit identifier de manière unique la tâche (par exemple, un chemin d’accès au document ou un nom de projet).
  • Mettre à jour les activités : appelez SaveAsync() lorsque l’utilisateur progresse pour maintenir la description actuelle.
  • Définir un URI d’activation : fournissez toujours un URI afin que l’activité puisse relancer l’application à l’état correct.
  • Créez une session à la fois : supprimez la session précédente avant de en créer une.

Pour obtenir des conseils détaillés, consultez les meilleures pratiques relatives aux activités des utilisateurs.