Gebruikersactiviteiten maken in Windows App SDK-apps

Gebruikersactiviteiten vertegenwoordigen taken die een gebruiker uitvoert in uw app. U maakt activiteiten om gebruikers in staat te stellen op te halen waar ze waren gebleven. Activiteiten worden weergegeven in de geschiedenis van lokale activiteiten en kunnen worden weergegeven door Windows functies die gebruikers helpen terug te keren naar eerdere taken.

Note

Tijdlijncloudsynchronisatie is in juli 2021 afgeschaft. Gebruikersactiviteiten die door uw app worden gemaakt, worden lokaal opgeslagen en worden niet meer gesynchroniseerd op apparaten via Microsoft Graph tijdlijn. Lokale activiteitengeschiedenis op het apparaat werkt nog steeds.

Prerequisites

  • Uw app moet zijn verpakt (MSIX) of een pakketidentiteit hebben.
  • Er is geen declaratie van speciale mogelijkheden vereist: de UserActivity-API is beschikbaar voor alle verpakte apps.

Een gebruikersactiviteit maken

Gebruik de klassen UserActivityChannel en 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();
}

De activiteitssessie geeft aan dat de gebruiker momenteel bezig is met deze taak. Verwijder deze wanneer de gebruiker overschakelt naar een andere taak.

Uitgebreide visuele details instellen

Gebruik de eigenschappen op UserActivityVisualElements om de activiteit voor de gebruiker te beschrijven:

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) hiermee kunt u een volledige adaptieve kaart weergeven als een visual van een activiteit, maar dat oppervlak maakte deel uit van Windows tijdlijn, die Microsoft buiten gebruik gesteld. Gebruik niet AdaptiveCardBuilder in nieuwe code. Gebruik in plaats daarvan de VisualElements eigenschappen die hierboven worden weergegeven.

Activering vanuit een activiteit afhandelen

Wanneer de gebruiker een activiteit selecteert die moet worden hervat, wordt uw app geactiveerd met een protocol-URI. Handel dit af in je activeringslogica:

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

De sessie beëindigen

Wanneer de gebruiker niet meer aan de activiteit werkt, moet u de sessie verwijderen:

UserActivitySession? _currentSession = null;

_currentSession?.Dispose();
_currentSession = null;

Aanbevolen procedures

  • Gebruik zinvolle activiteits-id's : de id moet de taak uniek identificeren (bijvoorbeeld een documentpad of projectnaam).
  • Activiteiten bijwerken : aanroepen SaveAsync() wanneer de gebruiker voortgang maakt om de beschrijving actueel te houden.
  • Stel een activerings-URI in: geef altijd een URI op, zodat de activiteit de app opnieuw kan starten naar de juiste status.
  • Eén sessie tegelijk maken : de vorige sessie verwijderen voordat u een nieuwe sessie maakt.

Raadpleeg Aanbevolen procedures voor gebruikersactiviteiten voor gedetailleerde richtlijnen.