
בפוסט הקודם דיברתי על Scheduled Tasks, והראתי כיצד ניתן ליצור תהליכי רקע שפועלים למרות שהאפליקציה אינה רצה בקדמה. בפוסט זה אראה כיצד ניתן ליצור Reminders ו- Alarms שפועלים מבלי שהאפליקציה שאחראית אליהם רצה בקדמה.
Scheduled Notifications
בגרסת מנגו יש שני סוגי Scheduled Notifications:
Alarm – מציג הודעה מתוזמנת עם אפשרות בחירת Sound.
Reminder – דומה ל- Alarm בנוסף, בעת לחיצה על ההודעה מזניק את האפליקציה ומעביר לה מידע רלוונטי.
דוגמאת קוד
Code Snippet
- private void ButtonSetAlarm_Click(object sender, RoutedEventArgs e)
- {
- var alarm = new Alarm("Demo Alarm")
- {
- Content = "Wake up, it's Sunday!",
- RecurrenceType = RecurrenceInterval.Weekly,
- BeginTime = DateTime.Now + TimeSpan.FromSeconds(5)
- };
- ScheduledActionService.Add(alarm);
- }
כפי שניתן לראות, כדי לייצר Alarm חדש, כל מה שצריך לעשות זה ליצור אובייקט מסוג Alarm ולאתחל אותו בשעת התחלה, מחזוריות, ותוכן הודעה. שימו לב, כאן לא ניתן להגדיר Title מאחר שהוא תמיד קבוע ומוצג כ- “Alarm”. לבסוף יש להוסיף את האובייקט למערכת בעזרת ScheduledActionService.Add.
Code Snippet
- private void ButtonSetReminder_Click(object sender, RoutedEventArgs e)
- {
- var reminder = new Reminder("Demo Reminder")
- {
- Title = "Buy Food",
- Content = "Steak, Wine, more...",
- RecurrenceType = RecurrenceInterval.None,
- BeginTime = DateTime.Now + TimeSpan.FromSeconds(5),
- NavigationUri = new Uri("/FoodPage.xaml?food=steak", UriKind.Relative)
- };
- ScheduledActionService.Add(reminder);
- }
כדי להגדיר Reminder, יש ליצור אובייקט מסוג Reminder, לאתחל ולהוסיף למערכת בדומה ל- Alarm. כאן ניתן להגדיר Title, ובנוסף להגדיר איזה דף מהאפליקציה להפעיל כשלוחצים על ה- Reminder ברגע שמופיע, ואיזה פרמטר להעביר לדף זה. בדוגמה ניתן לראות שמבקשים לפתוח את הדף FoodPage.xaml, כאשר food=steak מועבר כפרמטר. כשהדף הנ”ל יפתח, ניתן יהיה לחלץ את הפרמטר ב- NavigatedTo:
Code Snippet
- protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
- {
- string paramValue = string.Empty;
- if (NavigationContext.QueryString.TryGetValue("food", out paramValue))
- {
- if (paramValue.Equals("steak"))
- {
- PageTitle.Text = "Steak Party";
- }
- }
- base.OnNavigatedTo(e);
- }
כפי שניתן לראות, ניתן להעזר ב- NavigationContext.QueryString כדי לחלץ את הפרמטר שנשלח בלחיצה על ה- Reminder.
מה בפוסט הבא?
Phone calendar and contacts query from application