Aracılığıyla paylaş


Bildirim ilerleme çubuğu ve veri bağlama

Bildirim bildiriminizin içinde bir ilerleme çubuğu kullanmak, indirmeler, video işleme, alıştırma hedefleri ve daha fazlası gibi uzun süre çalışan işlemlerin durumunu kullanıcıya iletmenizi sağlar.

Important

Creators Update ve Notifications kitaplığı 1.4.0'ıgerektirir: Tost bildirimlerinde ilerleme çubuklarını kullanmak için SDK 15063'ü hedeflemeniz ve derleme 15063 veya üzerini çalıştırmanız gerekir. Bildirim içeriğinizde ilerleme çubuğunu oluşturmak için UWP Community Toolkit Notifications NuGet kitaplığı sürüm 1.4.0 veya üzerini kullanmanız gerekir.

Bildirim içindeki ilerleme çubuğu "belirsiz" (belirli bir değer yok, animasyonlu noktalar bir işlemin gerçekleştiğini gösteriyor) veya "determinate" (çubuğun belirli bir yüzdesi 60%gibi doldurulur) olabilir.

Önemli API'ler: NotificationData sınıfı, ToastNotifier.Update yöntemi, ToastNotification sınıfı

Note

Yalnızca Masaüstü, toast bildirimlerinde ilerleme çubuklarını destekler. Diğer cihazlarda ilerleme çubuğu bildiriminizden bırakılır.

Aşağıdaki resimde, ilgili tüm özellikleri etiketlenmiş bir belirlenen ilerleme çubuğu gösterilmektedir.

İlerleme çubuğu özelliklerine sahip ekmeği, olarak etiketlendi.
Property Type Required Description
Title dize veya BindableString false İsteğe bağlı bir başlık metnini alır veya ayarlar. Veri bağlamayı destekler.
Value double veya AdaptiveProgressBarValue veya BindableProgressBarValue false İlerleme çubuğunun değerini alır veya ayarlar. Veri bağlamayı destekler. Varsayılan değer 0'dır. 0,0 ile 1,0 arasında çift, AdaptiveProgressBarValue.Indeterminateveya new BindableProgressBarValue("myProgressValue")olabilir.
ValueStringOverride dize veya BindableString false Varsayılan yüzde dizesi yerine görüntülenecek isteğe bağlı bir dize alır veya ayarlar. Bu sağlanmamışsa , "70%" gibi bir şey görüntülenir.
Status dize veya BindableString true Soldaki ilerleme çubuğunun altında görüntülenen bir durum dizesini (gerekli) alır veya ayarlar. Bu dize işlemin durumunu yansıtmalıdır, örneğin "İndiriyor..." veya "Yükleniyor..."

Yukarıda görülen bildirimi şu şekilde oluşturabilirsiniz...

new ToastContentBuilder()
    .AddText("Downloading your weekly playlist...")
    .AddVisualChild(new AdaptiveProgressBar()
    {
        Title = "Weekly playlist",
        Value = 0.6,
        ValueStringOverride = "15/26 songs",
        Status = "Downloading..."
    });

Ancak, ilerleme çubuğunun "canlı" olması için değerlerini dinamik olarak güncelleştirmeniz gerekir. Bu, toast güncellemek için veri bağlama kullanılarak yapılabilir.

Veri bağlamayı kullanarak toast güncelleme

Veri bağlamanın kullanılması aşağıdaki adımları içerir...

  1. Veri bağlı alanları kullanan bildirim içeriği oluşturma
  2. Etiketi (ve isteğe bağlı olarak Grubu) ToastNotification'ye atayın
  3. ToastNotification ilk Veri değerlerinizi tanımlama
  4. Tost gönder
  5. Veri değerlerini yeni değerlerle güncelleştirmek için Etiket ve Grubu kullanın

Aşağıdaki kod parçacığı 1-4 arası adımları gösterir. Bir sonraki kod parçacığı, tost veri değerlerinin nasıl güncellenebileceğini gösterecektir.

using Windows.UI.Notifications;
using Microsoft.Toolkit.Uwp.Notifications;
 
public void SendUpdatableToastWithProgress()
{
    // Define a tag (and optionally a group) to uniquely identify the notification, in order update the notification data later;
    string tag = "weekly-playlist";
    string group = "downloads";
 
    // Construct the toast content with data bound fields
    var content = new ToastContentBuilder()
        .AddText("Downloading your weekly playlist...")
        .AddVisualChild(new AdaptiveProgressBar()
        {
            Title = "Weekly playlist",
            Value = new BindableProgressBarValue("progressValue"),
            ValueStringOverride = new BindableString("progressValueString"),
            Status = new BindableString("progressStatus")
        })
        .GetToastContent();
 
    // Generate the toast notification
    var toast = new ToastNotification(content.GetXml());
 
    // Assign the tag and group
    toast.Tag = tag;
    toast.Group = group;
 
    // Assign initial NotificationData values
    // Values must be of type string
    toast.Data = new NotificationData();
    toast.Data.Values["progressValue"] = "0.6";
    toast.Data.Values["progressValueString"] = "15/26 songs";
    toast.Data.Values["progressStatus"] = "Downloading...";
 
    // Provide sequence number to prevent out-of-order updates, or assign 0 to indicate "always update"
    toast.Data.SequenceNumber = 1;
 
    // Show the toast notification to the user
    ToastNotificationManager.CreateToastNotifier().Show(toast);
}

Ardından, Veri değerlerinizi değiştirmek istediğinizde, tüm toast yükünü yeniden oluşturmadan yeni verileri sağlamak için Update yöntemini kullanın.

using Windows.UI.Notifications;
 
public void UpdateProgress()
{
    // Construct a NotificationData object;
    string tag = "weekly-playlist";
    string group = "downloads";
 
    // Create NotificationData and make sure the sequence number is incremented
    // since last update, or assign 0 for updating regardless of order
    var data = new NotificationData
    {
        SequenceNumber = 2
    };

    // Assign new values
    // Note that you only need to assign values that changed. In this example
    // we don't assign progressStatus since we don't need to change it
    data.Values["progressValue"] = "0.7";
    data.Values["progressValueString"] = "18/26 songs";

    // Update the existing notification's data by using tag/group
    ToastNotificationManager.CreateToastNotifier().Update(data, tag, group);
}

Tüm bildirimi değiştirmek yerine Update yönteminin kullanılması, bildirimin Eylem Merkezi'nde aynı konumda kalmasını ve yukarı veya aşağı kaymamasını da sağlar. İlerleme çubuğu doluyken bildirim birkaç saniyede bir İşlem Merkezi'nin en üstüne atlamaya devam ederse kullanıcı için oldukça kafa karıştırıcı olacaktır!

Update yöntemi, notificationUpdateResultbir sabit listesi döndürür. Bu, güncelleştirmenin başarılı olup olmadığını veya bildirimin bulunup bulunmadığını bilmenizi sağlar (bu, kullanıcının bildiriminizi büyük olasılıkla kapatmış olduğu ve güncelleştirme göndermeyi durdurmanız gerektiği anlamına gelir). İlerleme işleminiz tamamlanana kadar (indirme tamamlandığında olduğu gibi) başka bir bildirim almanızı önermeyiz.

Veri bağlamayı destekleyen öğeler

Bildirim uyarılarında aşağıdaki öğeler veri bağlamayı destekler.

  • AdaptiveProgress'daki tüm özellikler
  • En üst düzey AdaptiveText öğelerindeki Metin özelliği

Bildirimi güncelleştirme veya değiştirme

Windows 10'dan bu yana, bildirim yerine aynı Etiketi ve Groupile yeni bir bildirim gönderebilirsiniz. Peki, ile değiştirmek ile 'yi ve tostun verilerini güncellemek arasındaki fark nedir?

Replacing Updating
İşlem Merkezi'nde Konumu Bildirimi İşlem Merkezi'nin en üstüne taşır. bildirimi İşlem Merkezi'nde yerinde bırakır.
Modifying content Tost bildiriminin tüm içeriğini/düzenini tamamen değiştirebilir. Yalnızca veri bağlamayı destekleyen özellikleri değiştirebilir (ilerleme çubuğu ve en üst düzey metin)
Açılan olarak yeniden görüntüleniyor SuppressPopupfalse olarak ayarlarsanız (ya da sessizce İşlem Merkezi'ne göndermek için true olarak ayarlanırsa), bir bildirim açılır penceresi olarak yeniden görünebilir. Açılır pencere olarak yeniden gösterilmez; bildirim çubuğunun verileri İşlem Merkezi içinde sessizce güncellenir.
User dismissed Kullanıcı, önceki bildiriminizi görmezden gelse bile, yeni uyarı mesajınız her zaman gönderilecektir. Kullanıcı açılır bildiriminizi kapatmışsa, açılır bildirim güncelleştirmesi başarısız olur.

Genel olarak, güncelleştirmesi... açısından yararlıdır.

  • Kısa bir süre içinde sık sık değişen ve kullanıcının dikkatinin önüne getirilmesini gerektirmeyen bilgiler
  • Bildirim içeriğinizde, 50%'yi 65%'ye değiştirme gibi küçük değişiklikler

Çoğu zaman, güncelleştirme diziniz tamamlandıktan sonra (dosya indirildiği gibi), son adım için değiştirmenizi öneririz, çünkü...

  • Son bildiriminizde büyük olasılıkla ilerleme çubuğunun kaldırılması, yeni düğmelerin eklenmesi gibi önemli düzen değişiklikleri vardır
  • Kullanıcı, indirme işlemini izlemeyi umursamadığı için bekleyen ilerleme bildiriminizi kapatmış olabilir, ancak işlem tamamlandığında yine de açılan bildirimle bildirim almak isteyebilir