Compartilhar via


Habilitar o relançamento do seu conteúdo de Recall

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

Uma UserActivity se refere a algo específico em que o usuário estava trabalhando em seu aplicativo. Por exemplo, quando um usuário está escrevendo um documento, uma UserActivity pode fazer referência ao ponto específico do documento em que a escrita foi interrompida. Ao usar um aplicativo de música, a UserActivity pode ser a playlist que o usuário ouviu pela última vez. Ao desenhar em uma tela, a UserActivity pode ser o ponto em que o usuário fez sua última marca. Em resumo, a UserActivity representa um destino em seu aplicativo do Windows para o qual um usuário pode retornar com a finalidade de retomar o que estava fazendo.

Atividades de usuário enviadas por push

Sempre que o conteúdo principal em seu aplicativo for alterado (como o usuário abrindo um email diferente, abrindo 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 que ele salva e usará o ActivationUri na atividade para permitir ao usuário acessar novamente esse conteúdo.

Recomendamos que você efetue push de atividades do usuário em todos os computadores, mesmo aqueles que não estão em execução 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 aplicativo de uma maneira que seu aplicativo possa recuperá-las.

Opcional: manipulando o evento solicitado

Além de enviar atividades por push, seu aplicativo pode optar por implementar o evento UserActivityRequested, que o Windows pode executar para garantir que tenha a atividade mais recente do seu aplicativo.

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