Vytváření uživatelských aktivit v aplikacích Windows App SDK

Aktivity uživatelů představují úlohy, které uživatel ve vaší aplikaci provádí. Vytváříte aktivity, které uživatelům umožní pokračovat tam, kde skončili. Aktivity se zobrazují v historii místních aktivit a dají se zobrazit pomocí funkcí Windows, které uživatelům pomáhají vrátit se k předchozím úkolům.

Note

Cloudová synchronizace Časové osy byla v červenci 2021 ukončena. Aktivity uživatelů vytvořené vaší aplikací se ukládají místně a už se nesynchronizují mezi zařízeními prostřednictvím Microsoft Graph časové osy. Historie místních aktivit v zařízení stále funguje.

Předpoklady

  • Vaše aplikace musí být zabalená (MSIX) nebo musí mít identitu balíčku.
  • Nevyžaduje se žádná deklarace speciálních schopností – rozhraní API UserActivity je k dispozici pro všechny zabalené aplikace.

Vytvoření aktivity uživatele

Použijte třídy UserActivityChannel a 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();
}

Relace aktivit signalizuje, že uživatel je aktuálně zapojen do tohoto úkolu. Odstraňte ho, když uživatel přepne na jiný úkol.

Nastavte bohaté vizuální detaily

Pomocí vlastností userActivityVisualElements popíšete aktivitu uživateli:

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žňují vykreslit celou adaptivní kartu jako vizuální podobu aktivity, ale tato plocha byla součástí Časové osy Windows, kterou společnost Microsoft ukončila. Nepoužívejte AdaptiveCardBuilder v novém kódu – místo toho použijte VisualElements vlastnosti uvedené výše.

Zpracovat aktivaci z aktivity

Když uživatel vybere aktivitu, která se má obnovit, aktivuje se vaše aplikace pomocí identifikátoru URI protokolu. Zpracujte ji v logice aktivace:

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

Ukončení relace

Když uživatel ukončí práci na aktivitě, ukončete relaci:

UserActivitySession? _currentSession = null;

_currentSession?.Dispose();
_currentSession = null;

Osvědčené postupy

  • Použijte smysluplná ID aktivit – ID by mělo jednoznačně identifikovat úkol (například cestu k dokumentu nebo název projektu).
  • Aktualizace aktivit – Volání SaveAsync() , když uživatel postupuje, aby byl popis aktuální.
  • Nastavte aktivační identifikátor URI – Vždy zadejte identifikátor URI, aby aktivita mohla aplikaci znovu spustit do správného stavu.
  • Vytvořte jednu relaci najednou – před vytvořením nové zlikvidujte předchozí relaci.

Podrobné pokyny najdete v osvědčených postupech pro aktivity uživatelů.