Wintoast adalah perpustakaan ringan yang ditulis dalam C ++ yang membawa integrasi lengkap pemberitahuan modern Toast dari Windows 8 , Windows 10 dan Windows 11 .
Pemberitahuan Toast memungkinkan aplikasi Anda untuk memberi tahu pengguna tentang informasi yang relevan dan acara tepat waktu yang harus mereka lihat dan mengambil tindakan di dalam aplikasi Anda, seperti pesan instan baru, permintaan pertemanan baru, berita utama, atau acara kalender.
Wintoast mengintegrasikan semua templat standar yang tersedia dalam enumerasi ToastTemplateType.
| Templat | Keterangan | Contoh |
|---|---|---|
ImageAndText01 | Gambar besar dan satu string yang dibungkus tiga baris teks. | ![]() |
ImageAndText02 | Gambar besar, satu string teks tebal pada baris pertama, satu string teks biasa yang dibungkus dengan baris kedua dan ketiga. | ![]() |
ImageAndText03 | Gambar besar, satu string teks tebal yang dibungkus di dua baris pertama, satu string teks biasa pada baris ketiga. | ![]() |
ImageAndText04 | Gambar besar, satu string teks tebal pada baris pertama, satu string teks biasa pada baris kedua, satu string teks biasa pada baris ketiga. | ![]() |
Text01 | String tunggal terbungkus tiga baris teks. | ![]() |
Text02 | Satu string teks tebal pada baris pertama, satu string teks biasa yang dibungkus garis kedua dan ketiga. | ![]() |
Text03 | Satu string teks tebal yang dibungkus di dua baris pertama, satu string teks biasa pada baris ketiga. | ![]() |
Text04 | Satu string teks tebal pada baris pertama, satu string teks biasa pada baris kedua, satu string teks biasa pada baris ketiga. | ![]() |
Contoh Template ImageAndText02 :
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::ImageAndText02);
templ.setTextField( L" title " , WinToastTemplate::FirstLine);
templ.setTextField( L" subtitle " , WinToastTemplate::SecondLine);
templ.setImagePath( L" C:/example.png " ); Catatan: Pengguna dapat menggunakan suara sistem default atau menentukan suara untuk diputar saat pemberitahuan roti panggang ditampilkan. Perilaku yang sama untuk gambar pemberitahuan roti panggang, secara default windows mencoba menggunakan ikon aplikasi.*
Wintoast menangani berbagai acara:
Buat pawang kustom Anda untuk berinteraksi dengan tindakan pengguna dengan mensubklassing antarmuka IWinToastHandler :
class WinToastHandlerExample : public IWinToastHandler {
public:
WinToastHandlerExample ();
// Public interfaces
void toastActivated () const override ;
void toastActivated ( int actionIndex) const override ;
void toastDismissed (WinToastDismissalReason state) const override ;
void toastFailed () const override ;
};Dokumentasi lengkap dari konten pemberitahuan di sini.
Untuk membuat pemberitahuan penting, alarm, pengingat, dan pemberitahuan panggilan yang masuk, Anda cukup menggunakan pemberitahuan aplikasi normal dengan nilai skenario yang ditetapkan untuk itu. Skenario ini menyesuaikan beberapa perilaku untuk menciptakan pengalaman pengguna yang konsisten dan terpadu. Ada empat nilai skenario yang mungkin:
Tetapkan waktu setelah itu pemberitahuan bersulang tidak lagi dianggap saat ini atau valid dan tidak boleh ditampilkan. Windows berupaya meningkatkan pemberitahuan roti panggang segera setelah Anda menelepon pertunjukan, jadi properti ini jarang digunakan.
Untuk aplikasi Windows 8.x, properti ini juga menyebabkan pemberitahuan bersulang dihapus dari pusat tindakan setelah data dan waktu yang ditentukan tercapai.
CATATAN: Perilaku windows default adalah menyembunyikan pemberitahuan secara otomatis setelah waktu diatur di Windows kemudahan pengaturan akses. Jika Anda perlu mempertahankan pemberitahuan di Windows Action Center untuk jangka waktu yang lebih lama, Anda harus menghubungi WinToastTemplate::setExpiration .
Pedoman gaya Microsoft merekomendasikan untuk mewakili gambar profil dengan gambar melingkar untuk memberikan representasi yang konsisten dari orang -orang di seluruh aplikasi dan shell. Atur properti Hintcrop ke lingkaran untuk membuat gambar dengan tanaman melingkar.
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::ImageAndText02);
templ.setTextField( L" Matt sent you a friend request " , WinToastTemplate::FirstLine);
templ.setTextField( L" Hey, wanna dress up as wizards and ride around on hoverboards? " , WinToastTemplate::SecondLine);
templ.setImagePath( L" C:/example.png " );
templ.setHintCrop(WinToastTemplate::Circle);
Gambar pahlawan adalah gambar besar yang muncul di bagian atas pemberitahuan bersulang. Gambar pahlawan adalah opsional dan dapat digunakan untuk memberikan konteks tambahan kepada pengguna.
Catatan: Gambar Pahlawan tidak didukung di Windows 8.1 dan Windows Phone 8.1.
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::ImageAndText02);
templ.setTextField( L" Mary Anne " , WinToastTemplate::FirstLine);
templ.setTextField( L" Check out where we camped last night! " , WinToastTemplate::SecondLine);
templ.setHeroImagePath( L" C:/example.png " );
Gambar pahlawan ditentukan dengan memanggil metode WinToastTemplate::setHeroImagePath . Jalur gambar dapat berupa jalur file lokal atau URI.
Parameter kedua dari metode WinToastTemplate::setHeroImagePath adalah nilai boolean yang menentukan apakah gambar harus dilapisi dalam pemberitahuan roti panggang.
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::ImageAndText01);
templ.setTextField( L" Feature image of the day " , WinToastTemplate::FirstLine);
templ.setHeroImagePath( L" C:/example.png " , true );
Anda dapat menambahkan tindakan Anda sendiri, fakta ini memungkinkan Anda untuk berinteraksi dengan pengguna dengan cara yang berbeda:
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::ImageAndText01);
templ.setTextField( L" New product in stock " , WinToastTemplate::FirstLine);
std::vector<std::wstring> actions;
actions.push_back( L" See more details " );
actions.push_back( L" Remind me later " );
// ...
for ( auto const &action : actions) {
templ. addAction (action);
}
WinToast::instance ()->showToast(templ, handler) 
Pembaruan Ulang Tahun Baru: Jika Anda perlu merujuk sumber konten Anda, Anda dapat menggunakan teks atribusi. Teks ini selalu ditampilkan di bawah elemen teks apa pun, tetapi gambar inline di atas. Teks menggunakan ukuran yang sedikit lebih kecil dari elemen teks standar untuk membantu membedakan dari elemen teks biasa.
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::Text02);
templ.setTextField( L" Mary Anne " , WinToastTemplate::FirstLine);
templ.setTextField( L" Check out where we camped last night! " , WinToastTemplate::SecondLine);
templ.setHeroImagePath( L" C:/example.png " );
templ.setAttributionText( L" Via SMS " );
Jumlah waktu yang harus ditampilkan. Atribut ini dapat memiliki salah satu nilai berikut: - Sistem : Konfigurasi Sistem Default. - Pendek : Konfigurasi Sistem Default Singkat. - Long : Konfigurasi Sistem Lama Sistem Default.
Anda dapat memodifikasi berbagai perilaku suara: - Default : Memutar file audio hanya satu kali. - Diam : Matikan suaranya. - Loop : Memutar suara yang diberikan dalam satu loop selama keberadaan roti panggang.
Wintoast memungkinkan modifikasi file audio default. Tambahkan file yang diberikan ke sumber daya proyek Anda ( harus ms-appx: // atau ms-appdata: // path ) dan tentukan dengan menelepon:
WinToastTemplate::setAudioPath
Secara default, Wintoast memeriksa jika sistem Anda mendukung fitur, mengabaikan yang tidak didukung.
Ada beberapa alasan Wintoast dapat gagal, itulah sebabnya perpustakaan memberi tahu penelepon tentang alasan gagal. Itu adalah kode untuk setiap kegagalan:
| Wintoasterror | Kode kesalahan | Pesan kesalahan |
|---|---|---|
NoError | 0x00 | Tidak ada kesalahan. Prosesnya dieksekusi dengan benar |
NotInitialized | 0x01 | Perpustakaan belum diinisialisasi |
SystemNotSupported | 0x02 | OS tidak mendukung Wintoast |
ShellLinkNotCreated | 0x03 | Perpustakaan tidak dapat membuat tautan shell untuk aplikasi |
InvalidAppUserModelID | 0x04 | Aumi bukan yang valid |
InvalidParameters | 0x05 | Parameter yang digunakan untuk mengonfigurasi pustaka tidak valid secara normal karena aumi atau nama aplikasi yang tidak valid |
NotDisplayed | 0x06 | Toast dibuat dengan benar tetapi Wintoast tidak dapat menampilkan roti panggang |
UnknownError | 0x07 | Kesalahan yang tidak diketahui |
Contoh penggunaan umum adalah memeriksa saat menginisialisasi perpustakaan atau menunjukkan pemberitahuan bersulang kode kegagalan yang mungkin:
WinToast::WinToastError error;
const auto succedded = WinToast::instance()-> initialize (&error);
if (!succedded) {
std::wcout << L" Error, could not initialize the lib. Error number: "
<< error << std::endl;
}
...
// Configure the template
...
const auto toast_id = WinToast::instance()-> showToast (templ, handler, &error);
if (toast_id < 0 ) {
std::wcout << L" Error: Could not launch your toast notification. Error: "
<< error << std::endl;
}Untuk penggunaan yang mudah, Anda bisa menggunakan instance Singleton yang tersedia.
Langkah pertama, impor file header wintoastlib.h ke proyek Anda. Anda harus memeriksa apakah versi Windows Anda didukung oleh perpustakaan.
using namespace WinToastLib ;
....
if (!WinToast::isCompatible()) {
std::wcout << L" Error, your system in not supported! " << std::endl;
}Konfigurasikan ID Model Pengguna Aplikasi Anda, ini dapat dilakukan dengan menggunakan helper yang ada:
WinToast::instance ()->setAppName( L" WinToastExample " );
const auto aumi = WinToast::configureAUMI( L" mohabouje " , L" wintoast " , L" wintoastexample " , L" 20161006 " );
WinToast::instance ()->setAppUserModelId(aumi); Inisialisasi semua dependensi dan periksa apakah Wintoast telah diinisialisasi dengan sukses dalam sistem Anda:
if (!WinToast::instance()-> initialize ()) {
std::wcout << L" Error, could not initialize the lib! " << std::endl;
} Implementasikan Action Handler Anda sendiri dengan mensubklassing antarmuka IWinToastHandler dan Kustom Template Anda:
WinToastHandlerExample* handler = new WinToastHandlerExample;
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::ImageAndText02);
templ.setImagePath( L" C:/example.png " );
templ.setTextField( L" title " , WinToastTemplate::FirstLine);
templ.setTextField( L" subtitle " , WinToastTemplate::SecondLine);Akhirnya tunjukkan hasilnya:
const auto toast_id = WinToast::instance()-> showToast (templ, handler, &error);
if (toast_id < 0 ) {
std::wcout << L" Error: Could not launch your toast notification! " << std::endl;
}Shao Voon Wong menulis artikel yang bagus tentang penggunaan Wintoast. Anda dapat menemukannya di sini.
Jika Anda menggunakan manajer paket, ada port untuk VCPKG. Kalau tidak, cara termudah adalah dengan menyalin file sumber sebagai dependensi eksternal.
Windows memungkinkan konfigurasi perilaku default pemberitahuan bersulang. Ini dapat dilakukan dalam kemudahan konfigurasi akses dengan memodifikasi tab Opsi Lainnya .
Konfigurasi sistem membantu Anda menentukan berapa lama Anda ingin pemberitahuan muncul (5 detik hingga 5 menit) sebagai menyalakan pemberitahuan visual untuk suara.