Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam mulai cepat ini, Anda akan membuat aplikasi WinUI yang mengirim dan merespons pemberitahuan aplikasi lokal menggunakan SDK Aplikasi Windows.
Untuk contoh lengkap aplikasi yang menerapkan pemberitahuan aplikasi, lihat repositori SDK Aplikasi Windows Sampel pada GitHub.
Important
Pemberitahuan aplikasi tidak didukung untuk aplikasi dengan hak admin.
Prerequisites
- Menginstal Visual Studio 2026
- Sertakan beban kerja C++ atau beban kerja .NET untuk pengembangan C#.
- Pastikan bahwa MSIX Packaging Tools dalam pengembangan desktop .NET sudah dipilih.
- Pastikan Pengembangan Aplikasi Windows dipilih.
- Pastikan Pengembangan Aplikasi UI Windows dipilih.
Untuk informasi selengkapnya tentang mengelola beban kerja di Visual Studio, lihat Modify Visual Studio beban kerja, komponen, dan paket bahasa. Untuk informasi selengkapnya tentang mulai menggunakan WinUI, lihat Mulai menggunakan WinUI. Untuk menambahkan SDK Aplikasi Windows ke proyek yang sudah ada, lihat Gunakan SDK Aplikasi Windows dalam proyek yang sudah ada.
Membuat proyek aplikasi WinUI baru di Visual Studio
- Di Visual Studio, buat proyek baru.
- Dalam dialog Buat proyek baru , atur filter bahasa ke "C#" atau "C++" dan filter platform ke "WinUI", lalu pilih templat proyek "Aplikasi Kosong, Dipaketkan (WinUI 3 di Desktop)".
- Beri nama proyek baru "AppNotificationsExample".
Mengirim pemberitahuan aplikasi lokal
Di bagian ini, Anda akan menambahkan tombol ke aplikasi yang mengirim pemberitahuan aplikasi lokal saat diklik. Pemberitahuan akan menyertakan konten teks dan gambar logo aplikasi. Anda juga akan menambahkan dua kotak teks baca-saja yang akan menampilkan argumen aktivasi saat pengguna mengklik pemberitahuan.
Pertama, tambahkan kontrol Tombol dan dua kontrol TextBox ke MainWindow.xaml:
<!-- MainWindow.xaml -->
<Button x:Name="SendNotificationButton" Content="Send App Notification" Click="SendNotificationButton_Click"/>
<TextBlock Text="Activation arguments:" FontWeight="SemiBold" Margin="0,12,0,0"/>
<TextBox x:Name="ActionTextBox" Header="action" IsReadOnly="True" PlaceholderText="(none)"/>
<TextBox x:Name="ExampleEventIdTextBox" Header="exampleEventId" IsReadOnly="True" PlaceholderText="(none)"/>
API pemberitahuan aplikasi berada di Microsoft.Windows. AppNotifications dan Microsoft.Windows. AppNotifications.Builder namespace. Tambahkan referensi berikut ke proyek Anda:
// MainWindow.xaml.cs
using Microsoft.Windows.AppNotifications;
using Microsoft.Windows.AppNotifications.Builder;
Sekarang, tambahkan kode berikut ke handler klik tombol Anda. Contoh ini menggunakan AppNotificationBuilder untuk membuat konten pemberitahuan, termasuk argumen yang akan diteruskan kembali ke aplikasi saat pengguna mengklik pemberitahuan, gambar logo aplikasi, dan teks. Pemberitahuan juga menyertakan tombol yang menunjukkan melakukan tindakan tanpa meluncurkan UI aplikasi. Metode BuildNotification membuat objek AppNotification , dan AppNotificationManager.Show menampilkannya kepada pengguna.
// MainWindow.xaml.cs
private void SendNotificationButton_Click(object sender, RoutedEventArgs e)
{
var appNotification = new AppNotificationBuilder()
.AddArgument("action", "NotificationClick")
.AddArgument("exampleEventId", "1234")
.SetAppLogoOverride(new System.Uri("ms-appx:///Assets/Square150x150Logo.png"), AppNotificationImageCrop.Circle)
.AddText("This is text content for an app notification.")
.AddButton(new AppNotificationButton("Perform action without launching app")
.AddArgument("action", "BackgroundAction"))
.BuildNotification();
AppNotificationManager.Default.Show(appNotification);
}
Pada titik ini, Anda dapat membuat dan menjalankan aplikasi Anda. Klik tombol Kirim Pemberitahuan Aplikasi untuk menampilkan pemberitahuan. Perhatikan bahwa mengklik pemberitahuan belum akan melakukan tindakan apa pun — di bagian berikutnya, Anda akan mempelajari cara menangani aktivasi aplikasi sehingga aplikasi Anda dapat merespons saat pengguna mengklik pemberitahuan.
Note
Pemberitahuan aplikasi tidak didukung saat aplikasi Anda berjalan dengan hak istimewa administrator (ditinggikan). Tampilkan akan gagal secara diam-diam dan tidak ada pemberitahuan yang akan ditampilkan. Pastikan Anda menjalankan aplikasi tanpa elevasi saat menguji pemberitahuan.
Memperbarui file manifes paket aplikasi
File Package.appmanifest ini menyediakan rincian tentang paket MSIX untuk sebuah aplikasi. Untuk memungkinkan aplikasi diluncurkan saat pengguna berinteraksi dengan pemberitahuan aplikasi, Anda harus memperbarui file manifes paket aplikasi sehingga aplikasi Anda terdaftar di sistem sebagai target untuk aktivasi pemberitahuan aplikasi. Untuk informasi selengkapnya tentang manifes paket aplikasi, lihat Manifes paket aplikasi.
- Edit file Package.appxmanifest dengan mengklik kanan file di Penjelajah Solusi dan memilih Tampilkan Kode.
- Tambahkan
xmlns:com="http://schemas.microsoft.com/appx/manifest/com/windows10"danxmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"namespace ke<Package>. -
<desktop:Extension>Tambahkan elemen di bawah<Extensions>. AturCategoryatribut ke"windows.toastNotificationActivation"untuk menyatakan bahwa aplikasi Anda dapat diaktifkan oleh pemberitahuan aplikasi.-
<desktop:ToastNotificationActivation>Tambahkan elemen turunanToastActivatorCLSIDdan atur ke GUID yang akan mengidentifikasi aplikasi Anda secara unik. - Anda dapat membuat GUID di Visual Studio dengan membuka Tools > Buat GUID.
-
-
<com:Extension>Tambahkan elemen di bawah<Extensions>dan atur atribut keCategory"windows.comServer". Contoh file manifes yang ditunjukkan di bawah ini menunjukkan sintaks untuk elemen ini.- Perbarui atribut
Executabledari elemen<com:ExeServer>dengan nama executable Anda. Untuk contoh ini, namanya adalah"AppNotificationsExample.exe". - Tentukan
Arguments="----AppNotificationActivated:"untuk memastikan bahwa SDK Aplikasi Windows dapat memproses payload pemberitahuan Anda sebagai tipe AppNotification. - Atur atribut
Idelemen<com:Class>ke GUID yang sama dengan yang Anda gunakan untuk atributToastActivatorCLSID.
- Perbarui atribut
<!--package.appxmanifest-->
<Package
xmlns:com="http://schemas.microsoft.com/appx/manifest/com/windows10"
xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"
...
<Applications>
<Application>
...
<Extensions>
<!--Specify which CLSID to activate when notification is clicked-->
<desktop:Extension Category="windows.toastNotificationActivation">
<desktop:ToastNotificationActivation ToastActivatorCLSID="replaced-with-your-guid-C173E6ADF0C3" />
</desktop:Extension>
<!--Register COM CLSID-->
<com:Extension Category="windows.comServer">
<com:ComServer>
<com:ExeServer Executable="SampleApp.exe" DisplayName="SampleApp" Arguments="----AppNotificationActivated:">
<com:Class Id="replaced-with-your-guid-C173E6ADF0C3" />
</com:ExeServer>
</com:ComServer>
</com:Extension>
</Extensions>
</Application>
</Applications>
</Package>
Penanganan aktivasi melalui pemberitahuan aplikasi
Saat pengguna mengklik pemberitahuan aplikasi atau tombol dalam pemberitahuan, aplikasi Anda perlu merespons dengan tepat. Ada dua skenario aktivasi umum:
- Luncurkan dengan UI — Pengguna mengklik isi pemberitahuan dan aplikasi Anda harus diluncurkan atau datang ke latar depan, menampilkan konten yang relevan.
- Tindakan latar belakang — Pengguna mengklik tombol di pemberitahuan yang memicu tindakan (seperti mengirim balasan) tanpa menampilkan UI aplikasi apa pun.
Untuk mendukung kedua skenario, alur aktivasi aplikasi Anda harus membuat jendela utama di OnLaunched tetapi tidak segera mengaktifkannya. Sebagai gantinya, daftarkan peristiwa AppNotificationManager.NotificationInvoked , panggil AppNotificationManager.Register, lalu periksa AppInstance.GetActivatedEventArgs untuk menentukan apakah ini adalah peluncuran normal atau jalur aktivasi COM yang harus menunggu NotificationInvoked. Kode Anda kemudian dapat memutuskan apakah akan menampilkan jendela atau menangani tindakan secara diam-diam dan keluar.
Peristiwa NotificationInvoked menangani klik yang terjadi saat aplikasi sudah berjalan. Saat aplikasi tidak berjalan, Windows meluncurkan aplikasi melalui aktivasi COM dan jenis aktivasi dilaporkan sebagai Launch, bukan AppNotification. Argumen pemberitahuan kemudian dikirimkan melalui NotificationInvoked event.
Important
Anda harus memanggil AppNotificationManager.Register sebelum memanggil AppInstance.GetActivatedEventArgs.
Important
Pengaturan activationType="background" dalam payload XML notifikasi diabaikan dalam aplikasi desktop. Anda harus memproses argumen aktivasi dalam kode Anda dan memutuskan apakah akan menampilkan jendela atau tidak.
// App.xaml.cs
using Microsoft.UI.Xaml;
using Microsoft.Windows.AppLifecycle;
using Microsoft.Windows.AppNotifications;
namespace AppNotificationsExample;
public partial class App : Application
{
private Window? _window;
public App()
{
InitializeComponent();
}
protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args)
{
_window = new MainWindow();
AppNotificationManager.Default.NotificationInvoked += OnNotificationInvoked;
AppNotificationManager.Default.Register();
var activatedArgs = AppInstance.GetCurrent().GetActivatedEventArgs();
if (activatedArgs.Kind == ExtendedActivationKind.AppNotification)
{
// App was launched by clicking a notification
var notificationArgs = (AppNotificationActivatedEventArgs)activatedArgs.Data;
HandleNotification(notificationArgs);
}
else
{
// Normal launch
_window.Activate();
}
}
private void OnNotificationInvoked(AppNotificationManager sender, AppNotificationActivatedEventArgs args)
{
// Notification clicked while app is already running
HandleNotification(args);
}
private void HandleNotification(AppNotificationActivatedEventArgs args)
{
var action = args.Arguments.ContainsKey("action") ? args.Arguments["action"] : "(none)";
var exampleEventId = args.Arguments.ContainsKey("exampleEventId") ? args.Arguments["exampleEventId"] : "(none)";
_window!.DispatcherQueue.TryEnqueue(() =>
{
switch (action)
{
case "BackgroundAction":
// Handle the action without showing the app window.
// If the window was never shown, exit the app.
if (!_window.Visible)
{
Application.Current.Exit();
}
break;
default:
// Bring the app to the foreground and display the notification arguments.
_window.Activate();
((MainWindow)_window).UpdateNotificationUI(action, exampleEventId);
break;
}
});
}
}
UpdateNotificationUI Tambahkan metode untuk MainWindow menampilkan argumen pemberitahuan dalam kotak teks yang ditambahkan sebelumnya.
// MainWindow.xaml.cs
public void UpdateNotificationUI(string action, string exampleEventId)
{
DispatcherQueue.TryEnqueue(() =>
{
ActionTextBox.Text = action;
ExampleEventIdTextBox.Text = exampleEventId;
});
}
Langkah berikutnya
- Konten pemberitahuan aplikasi — pelajari cara menambahkan gambar, tombol, input, dan elemen UI lainnya ke pemberitahuan Anda.
- Hapus pemberitahuan aplikasi — pelajari cara menandai, menghapus, dan mengatur kedaluwarsa pada pemberitahuan Anda.
Baca juga
Windows developer