[Xamarin]同一類型的Local Notification 只顯示一個

環境: 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:從零開始的軟體開發生活

請大家繼續支持 ^_^