Tworzenie działań użytkownika w aplikacjach Zestaw SDK do aplikacji systemu Windows

Działania użytkownika reprezentują zadania wykonywane przez użytkownika w aplikacji. Tworzysz aktywności, aby umożliwić użytkownikom powrót do miejsca, w którym przerwali. Działania są wyświetlane w lokalnej historii działań i mogą być udostępniane przez funkcje Windows, które ułatwiają użytkownikom powrót do poprzednich zadań.

Note

Synchronizacja z chmurą osi czasu została wycofana w lipcu 2021 r. Działania użytkownika utworzone przez aplikację są przechowywane lokalnie i nie są już synchronizowane między urządzeniami za pośrednictwem Microsoft Graph osi czasu. Historia działań lokalnych na urządzeniu nadal działa.

Wymagania wstępne

  • Aplikacja musi być spakietowana w formacie MSIX lub mieć identyfikator pakietu.
  • Nie jest wymagana żadna specjalna deklaracja możliwości — interfejs API UserActivity jest dostępny dla wszystkich spakowanych aplikacji.

Utwórz aktywność użytkownika

Użyj klas UserActivityChannel i 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();
}

Sesja aktywności sygnalizuje, że użytkownik jest obecnie zaangażowany w to zadanie. Usuwaj go, gdy użytkownik przełączy się do innego zadania.

Ustaw bogate szczegóły wizualne

Użyj właściwości elementu UserActivityVisualElements , aby opisać działanie użytkownikowi:

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) umożliwiają renderowanie pełnej karty adaptacyjnej jako wizualnej reprezentacji działania, ale ten obszar interfejsu był częścią Osi czasu systemu Windows, którą firma Microsoft wycofała z użytku. Nie używaj AdaptiveCardBuilder w nowym kodzie — zamiast tego użyj VisualElements właściwości przedstawionych powyżej.

Obsługiwanie aktywacji z aktywności

Gdy użytkownik wybierze działanie do wznowienia, aplikacja zostanie aktywowana przy użyciu identyfikatora URI protokołu. Obsłuż je w logice aktywacji:

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

Kończ sesję

Gdy użytkownik przestanie pracować nad działaniem, należy usunąć sesję:

UserActivitySession? _currentSession = null;

_currentSession?.Dispose();
_currentSession = null;

Najlepsze praktyki

  • Użyj znaczących identyfikatorów działań — identyfikator powinien jednoznacznie zidentyfikować zadanie (na przykład ścieżkę dokumentu lub nazwę projektu).
  • Aktualizowanie aktywności — wywołaj SaveAsync(), gdy użytkownik robi postępy, aby opis był aktualny.
  • Ustaw URI aktywacji — zawsze podawaj identyfikator URI, aby działanie mogło ponownie uruchomić aplikację we właściwym stanie.
  • Utwórz jedną sesję naraz — usuwaj poprzednią sesję przed utworzeniem nowej sesji.

Aby uzyskać szczegółowe wskazówki, zobacz Najlepsze rozwiązania dotyczące działań użytkowników.