Povolení opětovného spuštění obsahu z Recall

Recall automaticky ukládá snímky vaší aplikace, ale uživatelé nebudou moct znovu spustit zpět obsah, pokud v době snímku nezadáte userActivity . To umožňuje Recall spustit uživatele zpět do toho, co se v té době vidělo.

UserActivity odkazuje na něco konkrétního, na čem uživatel pracoval ve vaší aplikaci. Když například uživatel píše dokument, může UserActivity odkazovat na konkrétní místo v dokumentu, kde uživatel přestal psát. Při poslechu hudební aplikaci může být UserActivity playlist, který uživatel naposledy poslouchal. Při kreslení na plátno může být UserActivity místo, kde uživatel naposledy vytvořil značku. Stručně řečeno, UserActivity představuje cíl ve vaší aplikaci pro Windows, ke kterému se uživatel může vrátit, aby mohl pokračovat v tom, co dělal.

Propagace aktivit uživatelů

Pokaždé, když se hlavní obsah v aplikaci změní (třeba uživatel, který otevírá jiný e-mail, otevírá jinou webovou stránku atd.), měla by vaše aplikace protokolovat nový UserActivitySession obsah, aby systém věděl, jaký obsah je aktuálně otevřený. Recall pak přidruží nejnovější UserActivity ke snímku, který uloží, a využije ActivationUri během činnosti, aby uživatel mohl znovu otevřít tento obsah.

Doporučujeme propagovat uživatelské aktivity na všech počítačích, i těch, které nepoužívají Recall.

UserActivitySession _previousSession;

private async Task OnContentChangedAsync()
{
    // Dispose of any previous session (which automatically logs the end of the interaction with that content)
    _previousSession?.Dispose();

    // Generate an identifier that uniquely maps to your new content.
    string id = "doc135.txt";

    // Create a new user activity that represents your new content
    var activity = await UserActivityChannel.GetDefault().GetOrCreateUserActivityAsync(id);

    // Populate the required properties
    activity.VisualElements.DisplayText = "doc135.txt";
    activity.ActivationUri = new Uri("my-app://docs/doc135.txt");

    // Save the activity
    await activity.SaveAsync();

    // And start a new session tracking the engagement with this new activity
    _previousSession = activity.CreateSession();
}

Poznámka:

Metoda GetOrCreateUserActivityAsync vždy vrátí novou aktivitu v nejnovějších verzích Windows. Možnost získat dříve uložené aktivity byla odebrána a Systém Windows už neukládá předchozí aktivity vaší aplikace způsobem, jak je aplikace může načíst.

Volitelné: Zpracování požadované události

Kromě nabízení aktivit se vaše aplikace může rozhodnout implementovat událost UserActivityRequested, kterou může Windows aktivovat, aby zajistil, že má nejnovější aktivitu z vaší aplikace.

public void OnLaunched()
{
    UserActivityRequestManager.GetForCurrentView().UserActivityRequested += UserActivityRequested;
}

private async void UserActivityRequested(
    Windows.ApplicationModel.UserActivities.UserActivityRequestManager sender,
    Windows.ApplicationModel.UserActivities.UserActivityRequestedEventArgs args)
{
    // Start a deferral so you can use async code
    var deferral = args.GetDeferral();

    try
    {
        // Generate an identifier that uniquely maps to your current content.
        string id = "doc135.txt";

        // Create a user activity that represents your current content
        var activity = await UserActivityChannel.GetDefault().GetOrCreateUserActivityAsync(id);

        // Populate the required properties
        activity.VisualElements.DisplayText = "doc135.txt";
        activity.ActivationUri = new Uri("my-app://docs/doc135.txt");

        // And return the activity to the event handler
        args.Request.SetUserActivity(activity);
    }

    finally
    {
        // And complete the deferral
        deferral.Complete();
    }
}