In EKEvent, once i haven't set any alarm to event then i check in calendar app and it show me alert before 5 min. why ? i did not understand it.
my requirement
i want to set two alert, 1 alert on before given specific time like "5 minute, 15 minute, 30 minute, 1 hour". 2 second alert want set on event time.
On the base of searching how to add alarm in event i did something for add event but however it doesn't work. lot of try but no effect in calendar.
see below code i have tried both way as per my requirement i use switch case and even try to add single alarm. Both not work.
what should i have to do ?
give any suggestions, solution, idea
Thanks
let event:EKEvent = EKEvent(eventStore: appleEventStore)
event.title = tempDescription
event.startDate = startDate as Date
event.endDate = endDate as Date
event.isAllDay = false
event.notes = "This is a note"
event.calendar = cal
do {
try appleEventStore.save(event, span: .thisEvent)
print("events added with dates:")
let alarm = EKAlarm(relativeOffset: 600)
event.addAlarm(alarm)
switch tempalertid {
case "1":
let aInterval: TimeInterval = -5 * 60
let alaram = EKAlarm(relativeOffset: aInterval)
event.addAlarm(alaram)
case "2":
let aInterval: TimeInterval = -15 * 60
let alaram = EKAlarm(relativeOffset: aInterval)
event.addAlarm(alaram)
case "3":
let aInterval: TimeInterval = -30 * 60
let alaram = EKAlarm(relativeOffset: aInterval)
event.addAlarm(alaram)
case "4":
let aInterval: TimeInterval = -1 * 60 * 60
let alaram = EKAlarm(relativeOffset: aInterval)
event.addAlarm(alaram)
default:
break
}
if event.hasAlarms {
print("yes")
}
else {
print("no")
}
} catch let e as NSError {
print(e.description)
return
}
print("Saved Event")
I have two thoughts:
First, you are saving your event before you are creating your alarms.
Secondly, the .alarm property is an Array of alarms and you are trying to save each alarm individually.
I have a sample of code for you to take a look at, unfortunately, it's written in Objective-C.
EKEvent *event = [EKEvent eventWithEventStore:store];
EKAlarm *alarmForOneDayBeforeAppointment = [[EKAlarm alloc] init];
alarmForOneDayBeforeAppointment.absoluteDate = [self modifyDate:eventDate
withUnit:NSCalendarUnitDay
andQuantity:-1];
event.alarms = @[alarmForOneDayBeforeAppointment];
[store saveEvent:event span:EKSpanThisEvent error:&err];
Try saving your event after you set your event.alarm as an array.