Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir app bildirimi, kullanıcınız şu anda appde değilken app tarafından oluşturulup kullanıcıya teslim edebileceğiniz bir mesajdır.
Bu hızlı başlangıç, zengin içerik ve etkileşimli eylemler kullanarak Windows 10 veya Windows 11 app bildirimi oluşturma, teslim etme ve görüntüleme adımlarını gösterir. Bu hızlı başlangıçta, uygulanması en basit bildirim olan yerel bildirimler kullanılır. Tüm uygulama türleri (WPF, UWP, WinForms, konsol) bildirim gönderebilir!
Note
"toast bildirim" terimi "bildirim"app ile değiştiriliyor. Bu terimlerin her ikisi de Windows'un aynı özelliğine başvurur, ancak zamanla belgelerde "toast bildirim" kullanımını aşama dışı bırakmamız gerekir.
Important
UWP appolmayan bir C++ yazıyorsanız lütfen C++ WRL belgelerine bakın. C# appyazıyorsanız lütfen C# belgelerine bakın.
1. Adım: NuGet paketini yükleme
Windows Topluluk Araç Seti'nin (WCT) oluşturucu söz dizimi VEYA XML ile bildirimler oluşturabilirsiniz app . İkincisini tercih ediyorsanız, lütfen Adım 2 atlayın ve Oluşturucu söz dizimi olmadan kod örneklerine bakın.
Visual Studio çözümünüzde projenize sağ tıklayın, "NuGet Paketlerini Yönet..."
Builder söz dizimi kod örneklerimiz bu paketi kullanacaktır. Bu paket, XML kullanmadan bildirim oluşturmanıza app olanak tanır.
2. Adım: Ad alanı bildirimleri ekleme
- Oluşturucu söz dizimi
- oluşturucu söz dizimi olmadan
using namespace Microsoft::Toolkit::Uwp::Notifications;
3. Adım: Bildirim gönderme app
Windows 10 ve Windows 11'de bildirim içeriğiniz, bildiriminizin app görünümüyle ilgili büyük esneklik sağlayan uyarlamalı bir dil kullanılarak açıklanır. Daha fazla bilgi için bildirim içeriği belgelerine App bakın.
Basit bir metin tabanlı bildirimle başlayacağız. Bildirim içeriğini oluşturma (Bildirimler kitaplığını kullanarak) ve bildirimi gösterin! Ad alanının Microsoft.Toolkit.Uwp.Notificationsolduğunu unutmayın.
WCT Bildirimleri kütüphanesinin oluşturucu söz dizimini kullanmıyorsanız, bunun yerine XML app bildirim şablonunu oluşturacak, metin ve değerlerle dolduracak, bildirimi oluşturacak ve göstereceksiniz.
- Oluşturucu söz dizimi
- oluşturucu söz dizimi olmadan
// Construct the content and show the toast!
(ref new ToastContentBuilder())
->AddArgument("action", "viewConversation")
->AddArgument("conversationId", 9813)
->AddText("Andrew sent you a picture")
->AddText("Check this out, The Enchantments in Washington!")
->Show();
4. Adım: Etkinleştirmeyi işleme
Kullanıcı bildiriminize (veya ön plan etkinleştirmeli bildirimdeki bir düğmeye) tıkladığında, 'nizin appAppOnActivated .xaml.cpp çağrılır.
App.xaml.cpp
void App::OnActivated(IActivatedEventArgs^ e)
{
// Handle notification activation
if (e->Kind == ActivationKind::ToastNotification)
{
ToastNotificationActivatedEventArgs^ toastActivationArgs = (ToastNotificationActivatedEventArgs^)e;
// Obtain the arguments from the notification
ToastArguments^ args = ToastArguments::Parse(toastActivationArgs->Argument);
// Obtain any user input (text boxes, menu selections) from the notification
auto userInput = toastActivationArgs->UserInput;
// TODO: Show the corresponding content
}
}
Important
Çerçevenizi başlatmalı ve pencerenizi tıpkı OnLaunched kodunuz gibi etkinleştirmelisiniz. Kullanıcı app bildiriminize tıklarsa, uygulamanız kapatılmış ve ilk kez başlatılıyor olsa bile, app İkisinde de aynı başlatmanın gerçekleşmesi gerektiğinden, OnLaunched ve OnActivated yöntemlerinizi kendi OnLaunchedOrActivated yönteminizde birleştirmenizi öneririz.
Derinlemesine etkinleştirme
Bildirimlerinizi eyleme dönüştürülebilir hale getirmenin ilk adımı, kullanıcı bildirime tıkladığında ne başlatılacağını bilmeniz için bildiriminize bazı başlatma parametreleri eklemektir (bu durumda, daha sonra bir konuşma açmamız gerektiğini ve hangi konuşmanın açılacağını bildiğimizi belirten bazı bilgileri dahil ediyoruz).
- Oluşturucu söz dizimi
- oluşturucu söz dizimi olmadan
// Construct the content and show the toast!
(ref new ToastContentBuilder())
// Arguments returned when user taps body of notification
->AddArgument("action", "viewConversation")
->AddArgument("conversationId", 9813)
->AddText("Andrew sent you a picture")
->Show();
Resim ekleme
Bildirimlere zengin içerik ekleyebilirsiniz. Satır içi bir görüntü ve profil resmi (app logoyu değiştirme) ekleyeceğiz.
Note
Görüntü paketi app'den, yerel depolama alanı app'den veya web üzerinden kullanılabilir. Fall Creators Update itibarıyla web görüntüleri normal bağlantılarda 3 MB'a ve tarifeli bağlantılarda 1 MB'a kadar olabilir. Henüz Fall Creators Update'i çalıştırmayan cihazlarda web görüntülerinin 200 KB'tan büyük olmaması gerekir.
- Oluşturucu söz dizimi
- oluşturucu söz dizimi olmadan
// Construct the content and show the toast!
(ref new ToastContentBuilder())
...
// Inline image
->AddInlineImage(ref new Uri("https://picsum.photos/360/202?image=883"))
// Profile (app logo override) image
->AddAppLogoOverride(ref new Uri("ms-appdata:///local/Andrew.jpg"), ToastGenericAppLogoCrop::Circle)
->Show();
Düğme ve giriş ekleme
Bildirimlerinizi etkileşimli hale getirmek için düğmeler ve girişler ekleyebilirsiniz. Düğmeler ön planınızı app, protokolünüzü veya arka plan görevinizi başlatabilir. Bir yanıt metin kutusu, bir "Beğen" düğmesi ve resmi açan bir "Görünüm" düğmesi ekleyeceğiz.
- Oluşturucu söz dizimi
- oluşturucu söz dizimi olmadan
// Construct the content
(ref new ToastContentBuilder())
->AddArgument("conversationId", 9813)
...
// Text box for replying
->AddInputTextBox("tbReply", "Type a response")
// Buttons
->AddButton((ref new ToastButton())
->SetContent("Reply")
->AddArgument("action", "reply")
->SetBackgroundActivation())
->AddButton((ref new ToastButton())
->SetContent("Like")
->AddArgument("action", "like")
->SetBackgroundActivation())
->AddButton((ref new ToastButton())
->SetContent("View")
->AddArgument("action", "view"))
->Show();
Ön plan düğmelerinin aktif hale getirilmesi, ana bildirim gövdesiyle aynı şekilde işlenir (App.xaml.cpp'teki OnActivated çağrılır).
Arka plan etkinleştirmeyi yönetme
Bildiriminizde (veya bildirimin app içindeki bir düğmede) arka plan etkinleştirmeyi belirttiğinizde, arka plan göreviniz ön planınızı appetkinleştirmek yerine yürütülür.
Arka plan görevleri hakkında daha fazla bilgi için bkz. Arka plan görevleriyle destekleyinapp.
Derleme 14393 veya daha yeni bir sürümü hedefliyorsanız, işleri büyük ölçüde basitleştiren işlem içi arka plan görevlerini kullanabilirsiniz. İşlem içi arka plan görevlerinin Windows'un eski sürümlerinde çalışmayacağını unutmayın. Bu kod örneğinde işlem içi bir arka plan görevi kullanacağız.
const string taskName = "ToastBackgroundTask";
// If background task is already registered, do nothing
if (BackgroundTaskRegistration.AllTasks.Any(i => i.Value.Name.Equals(taskName)))
return;
// Otherwise request access
BackgroundAccessStatus status = await BackgroundExecutionManager.RequestAccessAsync();
// Create the background task
BackgroundTaskBuilder builder = new BackgroundTaskBuilder()
{
Name = taskName
};
// Assign the toast action trigger
builder.SetTrigger(new ToastNotificationActionTrigger());
// And register the task
BackgroundTaskRegistration registration = builder.Register();
Daha sonra, App.xaml.cs dosyasındaki OnBackgroundActivated yöntemini geçersiz kılın. Daha sonra, ön plan etkinleştirmeye benzer şekilde, önceden tanımlanmış argümanları ve kullanıcı girişini alabilirsiniz.
App.xaml.cs
protected override async void OnBackgroundActivated(BackgroundActivatedEventArgs args)
{
var deferral = args.TaskInstance.GetDeferral();
switch (args.TaskInstance.Task.Name)
{
case "ToastBackgroundTask":
var details = args.TaskInstance.TriggerDetails as ToastNotificationActionTriggerDetail;
if (details != null)
{
string arguments = details.Argument;
var userInput = details.UserInput;
// Perform tasks
}
break;
}
deferral.Complete();
}
Süre sonu ayarlama
Windows 10 ve 11'de, tüm app bildirimler kullanıcı tarafından kapatıldıktan veya yoksayıldıktan sonra İşlem Merkezi'ne gider, böylece kullanıcılar açılır pencere bittikten sonra bildiriminize bakabilir.
Bununla birlikte, bildiriminizdeki ileti yalnızca belirli bir süre için geçerliyse, kullanıcıların güncelliğini yitirmiş bilgileri app'den görmemesi için app bildirimin süresi dolacak şekilde bir süre sonu ayarlamalısınız. Örneğin, promosyon yalnızca 12 saat geçerliyse, süre sonu süresini 12 saat olarak ayarlayın. Aşağıdaki kodda süre sonu süresini 2 gün olarak ayarlayacağız.
Note
Yerel app bildirimler için varsayılan ve en uzun süre sonu süresi 3 gündür.
// Create toast content and show the toast!
(ref new ToastContentBuilder())
->AddText("Expires in 2 days...")
->Show(toast =>
{
toast->ExpirationTime = DateTime::Now->AddDays(2);
});
Bildiriminiz app için birincil anahtar sağlayın
Gönderdiğiniz bildirimi program aracılığıyla kaldırmak veya değiştirmek istiyorsanız, bildiriminiz için birincil anahtar sağlamak üzere Tag özelliğini (ve isteğe bağlı olarak Group özelliğini) kullanmanız gerekir. Ardından, gelecekte bildirimi kaldırmak veya değiştirmek için bu birincil anahtarı kullanabilirsiniz.
Önceden teslim edilen app bildirimleri değiştirme/kaldırma hakkında daha fazla bilgi için bkz . Hızlı Başlangıç: İşlem merkezinde bildirimleri yönetme toast (XAML).
Etiket ve Grup bir araya gelerek bileşik birincil anahtar oluşturur. Grup, "wallPosts", "messages", "friendRequests" vb. grupları atayabileceğiniz daha genel bir tanımlayıcıdır. Ardından Tag, bildirimin kendisini grubun içinden benzersiz bir şekilde tanımlamalıdır. Genel bir grup kullanarak, RemoveGroup API'sinikullanarak bu gruptaki tüm bildirimleri kaldırabilirsiniz.
// Create toast content and show the toast!
(ref new ToastContentBuilder())
->AddText("New post on your wall!")
->Show(toast =>
{
toast.Tag = "18365";
toast.Group = "wallPosts";
});
Bildirimlerinizi temizleme
Uygulamalar kendi bildirimlerini kaldırmak ve temizlemekle sorumludur. "Cihazınız app başlatıldığında, bildirimlerinizi otomatik olarak temizlemeyiz."
Windows, yalnızca kullanıcı bildirime açıkça tıkladıysa bildirimi otomatik olarak kaldırır.
İşte bir mesajlaşmanın app ne yapması gerektiğini gösteren bir örnek...
- Kullanıcı konuşmadaki yeni iletiler hakkında birden çok app bildirim alır
- Kullanıcı konuşmayı açmak için bu bildirimlerden birine dokunur
- app konuşmayı açar ve ardından bu konuşmanın tüm bildirimlerini temizler (bu konuşma için sağlanan grupta RemoveGroupapp kullanarak)
- Kullanıcının İşlem Merkezi artık bildirim durumunu düzgün şekilde yansıtıyor çünkü bu konuşma için İşlem Merkezi'nde kalan eski bildirimler yok.
Tüm bildirimleri temizleme veya belirli bildirimleri kaldırma hakkında bilgi edinmek için bkz . Hızlı Başlangıç: İşlem merkezinde bildirimleri yönetme toast (XAML).
ToastNotificationManagerCompat::History->Clear();
Resources
Windows developer