Aracılığıyla paylaş


İçeriğinizin yeniden başlatılmasına izin verin Recall

Recall uygulamanızın anlık görüntülerini otomatik olarak kaydeder, ancak anlık görüntü sırasında userActivity sağlamadığınız sürece kullanıcılar içeriğinize geri dönemez. Bu, kullanıcıyı o sırada görülene geri başlatmaya olanak tanır Recall .

UserActivity, kullanıcının uygulamanızda üzerinde çalıştığı belirli bir şeyi ifade eder. Örneğin, bir kullanıcı belge yazarken, UserActivity belgede kullanıcının yazmayı bıraktığı belirli yere başvurabilir. Bir müzik uygulamasını dinlerken, UserActivity kullanıcının son dinlediği çalma listesi olabilir. Tuval üzerinde çizim yaparken, UserActivity kullanıcının en son işaretlediği yer olabilir. Özetle, bir UserActivity, kullanıcının yaptıklarına devam edebilmesi için Windows uygulamanızda geri dönebileceği bir hedefi temsil eder.

Kullanıcı etkinliklerini gönderme

Uygulamanızdaki ana içerik değiştiğinde (kullanıcının farklı bir e-posta açması, farklı bir web sayfası açması gibi), sistemin şu anda hangi içeriğin açık olduğunu bilmesi için uygulamanızın yeni UserActivitySession bir oturum açması gerekir. Recall daha sonra en yeni UserActivity ile kaydedilen anlık görüntüyü ilişkilendirir ve kullanıcının bu içeriğe geri dönmesine olanak tanımak için etkinlik içinde ActivationUri'yi kullanır.

Her bilgisayarda, Recall çalıştırmayanlar da dahil olmak üzere, kullanıcı etkinliklerini kaydetmenizi öneririz.

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

Uyarı

GetOrCreateUserActivityAsync yöntemi her zaman Windows'un en son sürümlerinde yeni bir etkinlik döndürür. Daha önce kaydedilmiş etkinliklerinizi alma özelliği kaldırıldı ve Windows artık uygulamanızın önceki etkinliklerini uygulamanızın bunları alabildiği şekilde depolamaz.

İsteğe bağlı: İstenen olayı işleme

Uygulamanız, aktiviteleri iletmenin yanı sıra, Windows'un uygulamanızdan en güncel etkinliği almasını sağlamak amacıyla tetikleyebileceği UserActivityRequested etkinliğini de uygulamayı seçebilir.

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