UnityEngine.iOS.NotificationServices.CancelLocalNotification не удаляет уведомления
В настоящее время я создаю класс для обработки уведомлений для моей игры Unity3D для iOS. Но когда я использую UnityEngine.iOS.NotificationServices.CancelLocalNotification (nt);
ничего не происходит с запланированным уведомлением.
Может кто-нибудь помочь с указателями, как заставить это работать?
В качестве альтернативы я могу использовать UnityEngine.iOS.NotificationServices.CancelAllLocalNotifications
но это будет гораздо менее элегантно.
Я использую Unity 2017.2.0f3 и iOS 11.2.1 на 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);
}
1 ответ
Решение
Решаемые. Была ошибка в. If (nt.userInfo ["type"] == "morning") должно быть if (nt.userInfo ["type"].ToString() == "morning")