Freigeben über


Aktivieren des Neustarts Ihrer Inhalte von Recall

Recall speichert automatisch Momentaufnahmen Ihrer Anwendung, Benutzer können jedoch nicht zu Ihren Inhalten zurückkehren, es sei denn, Sie stellen eine UserActivity zum Zeitpunkt der Momentaufnahme bereit. Auf diese Weise kann Recall den Benutzer wieder in den zu diesem Zeitpunkt gesehenen Inhalt zurückversetzen.

Eine UserActivity bezieht sich auf etwas Bestimmtes, an dem der Benutzer innerhalb Ihrer Anwendung gearbeitet hat. Wenn ein Benutzer zum Beispiel ein Dokument schreibt, könnte ein UserActivity auf die Stelle im Dokument verweisen, an der der Benutzer mit dem Schreiben aufgehört hat. Beim Anhören einer Musik-App könnte das UserActivity die Playlist sein, die der Nutzer zuletzt angehört hat. Beim Zeichnen auf einem Kollaborationsbereich könnte das UserActivity die Stelle sein, an der der Benutzer zuletzt eine Markierung vorgenommen hat. Zusammenfassend lässt sich sagen, dass ein UserActivity ein Ziel innerhalb Ihrer Windows-App darstellt, zu dem ein Benutzer zurückkehren kann, um seine Arbeit fortzusetzen.

Fördern von Benutzeraktivitäten

Wenn sich der Hauptinhalt in Ihrer App ändert (z. B. der Benutzer, der eine andere E-Mail öffnet, eine andere Webseite öffnet usw.), sollte Ihre App ein neues UserActivitySession Protokoll protokollieren, damit das System weiß, welche Inhalte derzeit geöffnet sind. Recall ordnet dann die aktuellste UserActivity Momentaufnahme zu, die er speichert, und verwendet die ActivationUri innerhalb der Aktivität, um dem Benutzer das Erneute starten zu diesem Inhalt zu ermöglichen.

Wir empfehlen, Benutzeraktivitäten auf allen PCs zu übertragen, auch auf jenen, auf denen Recall nicht ausgeführt wird.

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

Hinweis

Die GetOrCreateUserActivityAsync-Methode gibt immer eine neue Aktivität in den neuesten Versionen von Windows zurück. Die Möglichkeit zum Abrufen ihrer zuvor gespeicherten Aktivitäten wurde entfernt, und Windows speichert die vorherigen Aktivitäten Ihrer App nicht mehr so, dass Ihre App sie abrufen kann.

Optional: Behandeln des angeforderten Ereignisses

Zusätzlich zu Pushaktivitäten kann Ihre App das UserActivityRequested Ereignis implementieren, das von Windows ausgelöst werden kann, um sicherzustellen, dass sie über die neueste Aktivität ihrer App verfügt.

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