Partilhar via


Habilite a reinicialização do seu conteúdo a partir de Recall

Recall salva automaticamente instantâneos do seu aplicativo, no entanto, os usuários não poderão reiniciar novamente o seu conteúdo, a menos que você forneça uma UserActivity no momento do instantâneo. Isso permite Recall lançar o usuário de volta ao que estava sendo visto naquele momento.

Um UserActivity refere-se a algo específico em que o usuário estava trabalhando em seu aplicativo. Por exemplo, quando um usuário está escrevendo um documento, um UserActivity pode se referir ao local específico no documento onde o usuário parou de escrever. Ao utilizar uma aplicação de música, o UserActivity pode ser a lista de reprodução que o utilizador ouviu pela última vez. Ao desenhar num quadro, o UserActivity pode indicar onde o utilizador marcou por último. Em resumo, um UserActivity representa um destino dentro do seu aplicativo do Windows ao qual um usuário pode retornar para que possa retomar o que estava fazendo.

Impulsionando as atividades do usuário

Sempre que o conteúdo principal do seu aplicativo for alterado (como o usuário abrir um e-mail diferente, abrir uma página da Web diferente, etc.), seu aplicativo deve registrar um novo UserActivitySession para que o sistema saiba qual conteúdo está aberto no momento. Recall Em seguida, associará o mais recente UserActivity ao instantâneo salvo e usará o ActivationUri na atividade para permitir que o usuário reinicie esse conteúdo.

Recomendamos que envie as atividades do utilizador em todos os PCs, mesmo naqueles que não estão a executar 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();
}

Observação

O método GetOrCreateUserActivityAsync sempre retornará uma nova atividade nas versões mais recentes do Windows. A capacidade de obter suas atividades salvas anteriormente foi removida e o Windows não armazena mais as atividades anteriores do seu aplicativo de forma que seu aplicativo possa recuperá-las.

Opcional: Tratamento do evento solicitado

Além de enviar atividades por push, a sua aplicação pode optar por implementar o evento UserActivityRequested, que o Windows pode acionar para garantir que tenha a atividade mais recente da sua aplicação.

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