I am currently building a class to handle notifications for my Unity3D game for iOS. But when I am using UnityEngine.iOS.NotificationServices.CancelLocalNotification (nt);
nothing happens to the scheduled notification.
Can someone help with pointers how to makes this work?
As an alternative I can use UnityEngine.iOS.NotificationServices.CancelAllLocalNotifications
but that will be much less elegant.
I am using Unity 2017.2.0f3 and iOS 11.2.1 on a iphone 6S.
public void UpdateMorningNotifications()
{
// Get all current scheduled morning notifications in a list. if they are type morning. erase them.
UnityEngine.iOS.LocalNotification[] scheduledNotifications = UnityEngine.iOS.NotificationServices.scheduledLocalNotifications;
Debug.Log ("NotificationScheduler/UpdateMorningNotifications - number of scheduledNotifications = " + scheduledNotifications.Length);
foreach (UnityEngine.iOS.LocalNotification nt in scheduledNotifications)
{
Debug.Log ("NotificationScheduler/UpdateMorningNotifications - clearing notification, type is " + nt.userInfo["type"] );
if (nt.userInfo ["type"] == "morning")
{
Debug.Log ("Its a morning nt, lets get rid of it!");
UnityEngine.iOS.NotificationServices.CancelLocalNotification (nt);
Debug.Log ("NotificationScheduler/UpdateMorningNotifications - clearing notification: " + nt.alertBody);
}
}
// building, and adding notifications to notificationservices.
DateTime fireDate = DateTime.Today;
int summedInterval = 0;
// fill up the morning timings list.
foreach (int interval in MorningNotificationDayInterVals)
{
// adding new interval to firedate
summedInterval = summedInterval + interval;
fireDate = fireDate.AddDays (summedInterval);
// if weekend fire at 10AM else 8 AM
if (fireDate.DayOfWeek.ToString() == "Saturday" || fireDate.DayOfWeek.ToString() == "Sunday") {
fireDate.AddHours (10);
} else {
fireDate.AddHours(8);
}
//generate notification with random title and the timing and add it to the batch.
int morningTitleIndex = UnityEngine.Random.Range(0,morningTitles.Length);
// generating a new notification.
notification = GenerateNotification (morningTitles[morningTitleIndex], fireDate, "morning");
// adding the notification to the batch.
notificationBatch.Add (notification);
Debug.Log("NotificationScheduler/UpdateMorningNotifications: Length of notificationBatch = " + notificationBatch.Count);
}
// Adding notifications to notificationsservices
AddNotificationBatchToNotificationServices (notificationBatch);
}
Solved. There was a bug in. if (nt.userInfo ["type"] == "morning") should be if (nt.userInfo ["type"].ToString() == "morning")