環境: iOS,Xamarin
有時候 App 發通知時,如果有些一樣的通知,一直重覆顯示出來,
在通知那看起來一堆,不好看,使用者看起來感受也不太好。
所以本文介紹將一樣通知讓它只顯示一個就好。
在前篇「讓通知擁有不同Actions」中,如果重覆發出相同 Category 的通知,
這樣通知畫面會一堆,所以我們可以調整成,相同的 Category 通知,只會顯示一個。
那怎麼做呢? 只要將通知放到一個 Dictionary 之中,在發通知時去檢查並刪除舊的通知,再放入目前的通知就可以了。
在 ViewController.cs 中先建立 Dictionary 物件。
//1.用一個 Dictionary<string, UILocalNotification> 來儲存發出去的通知
Dictionary<string, UILocalNotification> _Notifications = new Dictionary<string, UILocalNotification>();
而原本 PerformLocalNotificationByCategory 方法則在最前面跟最後面加入刪除相同 Category 通知及加入 Dictionary 的 Code,如下,
void PerformLocalNotificationByCategory(string category)
{
//2.以類別為Key, 如果存在 Dictionary 的通知,就將它清掉
UILocalNotification storedNotification;
if (_Notifications.TryGetValue(category, out storedNotification))
{
UIApplication.SharedApplication.CancelLocalNotification(storedNotification);
}
// create the notification
var notification = new UILocalNotification();
// set the fire date (the date time in which it will fire)
notification.FireDate = NSDate.Now;
// configure the alert
notification.AlertAction = "View Alert";
notification.AlertBody = $"這是{category}的Actions";
// set the sound to be the default sound
notification.SoundName = UILocalNotification.DefaultSoundName;
//
notification.Category = category;
// schedule it
UIApplication.SharedApplication.ScheduleLocalNotification(notification);
//3.最後以類別為Key, 將它存到 Dictionary
_Notifications[category] = notification;
}
現在每個 Category 的通知 都只會有一個而已哦~~
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^