Wintoast เป็นห้องสมุดเบา ๆ ที่เขียนใน C ++ ซึ่งนำการรวม การแจ้งเตือนขนมปังปิ้ง ที่ทันสมัยอย่างสมบูรณ์ของ Windows 8 , Windows 10 และ Windows 11
การแจ้งเตือนขนมปังปิ้งช่วยให้แอปของคุณแจ้งให้ผู้ใช้ทราบเกี่ยวกับข้อมูลที่เกี่ยวข้องและเหตุการณ์ในเวลาที่เหมาะสมที่พวกเขาควรเห็นและดำเนินการภายในแอปของคุณเช่นข้อความโต้ตอบแบบทันทีใหม่คำขอเป็นเพื่อนใหม่ข่าวด่วนหรือเหตุการณ์ปฏิทิน
Wintoast รวมเทมเพลตมาตรฐานทั้งหมดที่มีอยู่ในการแจงนับ ToastTemplatetype
| เทมเพลต | คำอธิบาย | ตัวอย่าง |
|---|---|---|
ImageAndText01 | ภาพขนาดใหญ่และสตริงเดี่ยวห่อด้วยข้อความสามบรรทัด | ![]() |
ImageAndText02 | ภาพขนาดใหญ่ข้อความตัวหนาหนึ่งสตริงบนบรรทัดแรกหนึ่งสตริงของข้อความปกติที่ห่อหุ้มข้ามบรรทัดที่สองและสาม | ![]() |
ImageAndText03 | ภาพขนาดใหญ่ข้อความตัวหนาหนึ่งสตริงที่ห่อหุ้มผ่านสองบรรทัดแรกหนึ่งสายของข้อความปกติในบรรทัดที่สาม | ![]() |
ImageAndText04 | ภาพขนาดใหญ่หนึ่งสตริงของข้อความตัวหนาบนบรรทัดแรกหนึ่งสตริงของข้อความปกติในบรรทัดที่สองหนึ่งสตริงของข้อความปกติในบรรทัดที่สาม | ![]() |
Text01 | สตริงเดี่ยวห่อด้วยข้อความสามบรรทัด | ![]() |
Text02 | หนึ่งสตริงของข้อความตัวหนาบนบรรทัดแรกหนึ่งสตริงของข้อความปกติที่ห่อหุ้มข้ามบรรทัดที่สองและสาม | ![]() |
Text03 | หนึ่งสตริงของข้อความตัวหนาห่อข้ามสองบรรทัดแรกสตริงหนึ่งของข้อความปกติในบรรทัดที่สาม | ![]() |
Text04 | หนึ่งสตริงของข้อความตัวหนาบนบรรทัดแรกหนึ่งสตริงของข้อความปกติในบรรทัดที่สองหนึ่งสตริงของข้อความปกติในบรรทัดที่สาม | ![]() |
ตัวอย่างของเทมเพลต ImageAndText02 :
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::ImageAndText02);
templ.setTextField( L" title " , WinToastTemplate::FirstLine);
templ.setTextField( L" subtitle " , WinToastTemplate::SecondLine);
templ.setImagePath( L" C:/example.png " ); หมายเหตุ: ผู้ใช้สามารถใช้เสียงระบบเริ่มต้นหรือระบุเสียงที่จะเล่นเมื่อมีการแจ้งเตือนขนมปังปิ้ง พฤติกรรมเดียวกันสำหรับอิมเมจการแจ้งเตือนขนมปังปิ้งตาม windows เริ่มต้นพยายามใช้ไอคอนแอพ*
Wintoast จัดการกับเหตุการณ์ต่าง ๆ :
สร้างตัวจัดการที่กำหนดเองของคุณเพื่อโต้ตอบกับการกระทำของผู้ใช้โดยการแบ่งย่อยอินเทอร์เฟซ 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 ;
};เอกสารฉบับเต็มของเนื้อหาการแจ้งเตือนที่นี่
ในการสร้างการแจ้งเตือนที่สำคัญการเตือนการเตือนความจำและการแจ้งเตือนการโทรเข้าคุณเพียงแค่ใช้การแจ้งเตือนแอปปกติพร้อมค่าสถานการณ์ที่กำหนดไว้ สถานการณ์ปรับพฤติกรรมบางอย่างเพื่อสร้างประสบการณ์ผู้ใช้ที่สอดคล้องและรวมเป็นหนึ่ง มีสี่ค่าสถานการณ์ที่เป็นไปได้:
ตั้งค่าเวลาหลังจากที่การแจ้งเตือนขนมปังปิ้งจะไม่ถูกพิจารณาว่าเป็นปัจจุบันหรือถูกต้องอีกต่อไปและไม่ควรแสดง Windows พยายามเพิ่มการแจ้งเตือนขนมปังปิ้งทันทีหลังจากที่คุณโทรมาแสดงดังนั้นคุณสมบัตินี้ไม่ค่อยได้ใช้
สำหรับแอพ Windows 8.x คุณสมบัตินี้ยังทำให้การแจ้งเตือนขนมปังปิ้งถูกลบออกจากศูนย์ปฏิบัติการเมื่อถึงข้อมูลและเวลาที่ระบุ
หมายเหตุ: พฤติกรรมของ Windows เริ่มต้นคือการซ่อนการแจ้งเตือนโดยอัตโนมัติหลังจากตั้งค่าเวลาใน Windows Ease of Access Settings หากคุณต้องการรักษาการแจ้งเตือนใน Windows Action Center เป็นเวลานานคุณต้องโทรหา WinToastTemplate::setExpiration
แนวทางสไตล์ Microsoft แนะนำให้แสดงรูปภาพโปรไฟล์ด้วยภาพวงกลมเพื่อให้การเป็นตัวแทนที่สอดคล้องกันของผู้คนในแอพและเชลล์ ตั้งค่าคุณสมบัติ Hintcrop เป็นวงกลมเพื่อแสดงภาพด้วยการครอบตัดแบบวงกลม
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);
ภาพฮีโร่เป็นภาพขนาดใหญ่ที่ปรากฏที่ด้านบนของการแจ้งเตือนขนมปังปิ้ง ภาพฮีโร่เป็นทางเลือกและสามารถใช้เพื่อให้บริบทเพิ่มเติมแก่ผู้ใช้
หมายเหตุ: ไม่รองรับภาพฮีโร่บน Windows 8.1 และ 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 " );
ภาพฮีโร่ถูกระบุโดยเรียกใช้วิธีการ WinToastTemplate::setHeroImagePath พา ธ รูปภาพสามารถเป็นเส้นทางไฟล์ในท้องถิ่นหรือ URI
พารามิเตอร์ที่สองของวิธีการ WinToastTemplate::setHeroImagePath เป็นค่าบูลีนที่ระบุว่าภาพควรจะถูก inlined ในการแจ้งเตือนขนมปังหรือไม่
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::ImageAndText01);
templ.setTextField( L" Feature image of the day " , WinToastTemplate::FirstLine);
templ.setHeroImagePath( L" C:/example.png " , true );
คุณสามารถเพิ่มการกระทำของคุณเองความจริงข้อนี้ช่วยให้คุณสามารถโต้ตอบกับผู้ใช้ในวิธีที่แตกต่าง:
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) 
ใหม่ในการอัปเดตครบรอบ: หากคุณต้องการอ้างอิงแหล่งที่มาของเนื้อหาของคุณคุณสามารถใช้ข้อความที่มา ข้อความนี้จะแสดงอยู่ด้านล่างองค์ประกอบข้อความใด ๆ เสมอ แต่เหนือภาพอินไลน์ ข้อความใช้ขนาดเล็กกว่าองค์ประกอบข้อความมาตรฐานเล็กน้อยเพื่อช่วยแยกความแตกต่างจากองค์ประกอบข้อความปกติ
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 " );
ระยะเวลาที่ขนมปังปิ้งควรแสดง แอตทริบิวต์นี้สามารถมีหนึ่งในค่าต่อไปนี้: - ระบบ : การกำหนดค่าระบบเริ่มต้น - สั้น : การกำหนดค่าเวลาสั้น ๆ ของระบบ - ยาว : การกำหนดค่าระบบเริ่มต้นเป็นเวลานาน
คุณสามารถแก้ไขพฤติกรรมที่แตกต่างของเสียง: - ค่าเริ่มต้น : เล่นไฟล์เสียงเพียงครั้งเดียว - เงียบ : ปิดเสียง - ลูป : เล่นเสียงที่กำหนดในลูประหว่างการมีอยู่ของขนมปังปิ้ง
Wintoast อนุญาตให้มีการปรับเปลี่ยนไฟล์เสียงเริ่มต้น เพิ่มไฟล์ที่กำหนดในทรัพยากรโครงการของคุณ ( ต้องเป็น ms-appx: // หรือ ms-appdata: // path ) และกำหนดโดยการโทร:
WinToastTemplate::setAudioPath
โดยค่าเริ่มต้น Wintoast จะตรวจสอบว่าระบบของคุณรองรับคุณสมบัติหรือไม่โดยไม่สนใจสิ่งที่ไม่รองรับ
มีสาเหตุหลายประการที่ Wintoast อาจล้มเหลวนั่นคือเหตุผลที่ห้องสมุดแจ้งผู้โทรเกี่ยวกับเหตุผลที่ล้มเหลว นั่นคือรหัสสำหรับแต่ละความล้มเหลว:
| Wintoasterror | รหัสข้อผิดพลาด | ข้อความแสดงข้อผิดพลาด |
|---|---|---|
NoError | 0x00 | ไม่มีข้อผิดพลาด กระบวนการดำเนินการอย่างถูกต้อง |
NotInitialized | 0x01 | ห้องสมุดยังไม่ได้เริ่มต้น |
SystemNotSupported | 0x02 | ระบบปฏิบัติการไม่รองรับ Wintoast |
ShellLinkNotCreated | 0x03 | ไลบรารีไม่สามารถสร้างลิงค์เชลล์สำหรับแอปได้ |
InvalidAppUserModelID | 0x04 | Aumi ไม่ได้ถูกต้อง |
InvalidParameters | 0x05 | พารามิเตอร์ที่ใช้ในการกำหนดค่าไลบรารีไม่ถูกต้องตามปกติเนื่องจาก AUMI หรือชื่อแอพไม่ถูกต้อง |
NotDisplayed | 0x06 | ขนมปังปิ้งถูกสร้างขึ้นอย่างถูกต้อง แต่ Wintoast ไม่สามารถแสดงขนมปังปิ้ง |
UnknownError | 0x07 | ข้อผิดพลาดที่ไม่รู้จัก |
ตัวอย่างทั่วไปของการใช้งานคือการตรวจสอบในขณะที่เริ่มต้นไลบรารีหรือแสดงการแจ้งเตือนของ Toast รหัสความล้มเหลวที่เป็นไปได้:
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;
}เพื่อการใช้งานง่ายคุณสามารถใช้อินสแตนซ์ Singleton ที่มีอยู่ได้
ขั้นตอนแรกนำเข้าไฟล์ส่วนหัว wintoastlib.h ไปยังโครงการของคุณ คุณควรตรวจสอบว่าเวอร์ชัน Windows ของคุณรองรับโดยไลบรารีหรือไม่
using namespace WinToastLib ;
....
if (!WinToast::isCompatible()) {
std::wcout << L" Error, your system in not supported! " << std::endl;
}กำหนดค่า ID รุ่นผู้ใช้แอปของคุณสามารถทำได้โดยใช้ตัวช่วยที่มีอยู่:
WinToast::instance ()->setAppName( L" WinToastExample " );
const auto aumi = WinToast::configureAUMI( L" mohabouje " , L" wintoast " , L" wintoastexample " , L" 20161006 " );
WinToast::instance ()->setAppUserModelId(aumi); เริ่มต้นการพึ่งพาทั้งหมดและตรวจสอบว่า Wintoast ได้รับการเริ่มต้นในระบบของคุณสำเร็จหรือไม่:
if (!WinToast::instance()-> initialize ()) {
std::wcout << L" Error, could not initialize the lib! " << std::endl;
} ใช้งานตัวจัดการการกระทำของคุณเองโดยการจัดคลาสอินเทอร์เฟซ IWinToastHandler และกำหนดเองเทมเพลตของคุณ:
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);ในที่สุดก็แสดงผลลัพธ์:
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 เขียนบทความที่ยอดเยี่ยมเกี่ยวกับการใช้ Wintoast คุณสามารถค้นหาได้ที่นี่
หากคุณใช้แพ็คเกจ Manager มีพอร์ตสำหรับ VCPKG มิฉะนั้นวิธีที่ง่ายที่สุดคือการคัดลอกไฟล์ต้นฉบับเป็นการพึ่งพาภายนอก
Windows อนุญาตให้กำหนดค่าพฤติกรรมเริ่มต้นของการแจ้งเตือนขนมปังปิ้ง สิ่งนี้สามารถทำได้ในการกำหนดค่า การเข้าถึงโดยง่าย โดยการแก้ไขแท็บ ตัวเลือกอื่น ๆ
การกำหนดค่าระบบช่วยให้คุณกำหนดระยะเวลาที่คุณต้องการให้การแจ้งเตือนปรากฏเป็นเวลา (5 วินาทีถึง 5 นาที) เป็นการเปิดการแจ้งเตือนด้วยภาพสำหรับเสียง