Erstellen von Benutzeraktivitäten in Windows App SDK Apps

Benutzeraktivitäten stellen Aufgaben dar, die ein Benutzer in Ihrer App ausführt. Sie erstellen Aktivitäten, um Benutzern die Möglichkeit zu geben, wo sie aufgehört haben. Aktivitäten werden im lokalen Aktivitätsverlauf angezeigt und können von Windows Features angezeigt werden, die Benutzern helfen, zu vorherigen Aufgaben zurückzukehren.

Note

Die Zeitachsen-Cloudsynchronisierung wurde im Juli 2021 nicht mehr unterstützt. Benutzeraktivitäten, die von Ihrer App erstellt werden, werden lokal gespeichert und werden nicht mehr über Microsoft Graph Zeitachse auf allen Geräten synchronisiert. Der lokale Aktivitätsverlauf auf dem Gerät funktioniert weiterhin.

Prerequisites

  • Ihre App muss gepackt (MSIX) sein oder über eine Paketidentität verfügen.
  • Es ist keine spezielle Funktionsdeklaration erforderlich – die UserActivity-API ist für alle verpackten Apps verfügbar.

Erstellen einer Benutzeraktivität

Verwenden Sie die Klassen UserActivityChannel und 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();
}

Die Aktivitätssitzung signalisiert, dass der Benutzer derzeit mit dieser Aufgabe beschäftigt ist. Verwerfen Sie es, wenn der Benutzer zu einer anderen Aufgabe wechselt.

Festlegen umfangreicher visueller Details

Verwenden Sie die Eigenschaften für UserActivityVisualElements , um die Aktivität für den Benutzer zu beschreiben:

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) ermöglichen es Ihnen, eine vollständige Adaptive Card als visuelle Darstellung einer Aktivität zu rendern, aber diese Oberfläche war Teil der Windows Timeline, die Microsoft inzwischen eingestellt hat. Verwenden Sie AdaptiveCardBuilder nicht in neuem Code — verwenden Sie stattdessen die oben gezeigten VisualElements Eigenschaften.

Aktivierung über eine Aktivität behandeln

Wenn der Benutzer eine Aktivität auswählt, die fortgesetzt werden soll, wird Ihre App mit einem Protokoll-URI aktiviert. Behandeln Sie sie in Ihrer Aktivierungslogik:

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

Beenden der Sitzung

Wenn der Benutzer die Arbeit an der Aktivität beendet, verwerfen Sie die Sitzung:

UserActivitySession? _currentSession = null;

_currentSession?.Dispose();
_currentSession = null;

Bewährte Vorgehensweisen

  • Verwenden Sie aussagekräftige Aktivitäts-IDs – Die ID sollte den Vorgang eindeutig identifizieren (z. B. einen Dokumentpfad oder Projektnamen).
  • Aktualisieren von Aktivitäten – Rufen Sie auf SaveAsync() , wenn der Benutzer Fortschritte macht, um die Beschreibung aktuell zu halten.
  • Festlegen eines Aktivierungs-URI – Geben Sie immer einen URI an, damit die Aktivität die App auf den richtigen Zustand neu starten kann.
  • Erstellen Sie jeweils eine Sitzung – Verwerfen Sie die vorherige Sitzung, bevor Sie eine neue Sitzung erstellen.

Ausführliche Anleitungen finden Sie unter "Bewährte Methoden für Benutzeraktivitäten".