Udostępnij za pośrednictwem


Włącz ponowne uruchamianie zawartości z witryny Recall

Recall Automatycznie zapisuje migawki aplikacji, jednak użytkownicy nie będą mogli ponownie ponownie uruchomić zawartości, chyba że udostępnisz element UserActivity w momencie utworzenia migawki. Umożliwia Recall to uruchomienie użytkownika z powrotem do tego, co było widoczne w tym czasie.

UserActivity odnosi się do konkretnego elementu, nad którym użytkownik pracował w Twojej aplikacji. Na przykład gdy użytkownik pisze dokument, UserActivity może odwoływać się do określonego miejsca w dokumencie, w którym użytkownik zrezygnował z zapisywania. Podczas słuchania aplikacji muzycznej UserActivity może być listą odtwarzania, którą użytkownik ostatnio słuchał. Podczas rysowania na płótnie UserActivity może być miejscem, w którym użytkownik ostatnio zrobił znak. Podsumowując, UserActivity reprezentuje miejsce docelowe w aplikacji systemu Windows, do którego użytkownik może wrócić, aby mógł wznowić działanie.

Przesyłanie działań użytkownika

Za każdym razem, gdy główna zawartość w aplikacji zmieni się (na przykład użytkownik otwierający inną wiadomość e-mail, otwierając inną stronę internetową itp.), aplikacja powinna rejestrować nową UserActivitySession zawartość, aby system wiedział, jaka zawartość jest obecnie otwarta. Recall Następnie skojarzy najnowsze UserActivity z migawką, którą zapisze, i użyje elementu ActivationUri w ramach działania, aby umożliwić użytkownikowi ponowne uruchamianie tej zawartości.

Zalecamy synchronizowanie działań użytkowników do wszystkich komputerów, nawet tych, które nie działają 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.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();
}

Uwaga / Notatka

Metoda GetOrCreateUserActivityAsync zawsze zwraca nowe działanie w najnowszych wersjach systemu Windows. Możliwość pobrania wcześniej zapisanych działań została usunięta, a system Windows nie przechowuje już poprzednich działań aplikacji w taki sposób, aby aplikacja mogła je pobrać.

Opcjonalnie: obsługa żądanego zdarzenia

Oprócz przesyłania działań aplikacja może zdecydować się na zaimplementowanie UserActivityRequested zdarzenia, które mogą zostać wyzwolone przez system Windows, aby upewnić się, że ma ona najnowsze działanie twojej aplikacji.

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.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();
    }
}