2

I have value like

createdate = "2013-09-24 04:29:30";

I have to set a reminder on this time .I am using local notification to set the reminder but i am not sure how to remove it after it occurs and also how to invoke it again after two minutes of the reminder time.

Thanks in advance.

EKEventStore *eventStore = [[EKEventStore alloc]init];
EKEvent *event = [EKEvent eventWithEventStore:eventStore];
[event setCalendar:[eventStore defaultCalendarForNewEvents]];

//no need to fill all fill which one u want to set
event.title =@"eventTitle";
event.location = @"eventLocation";
event.notes = @"eventNote";
event.startDate =  datePicker.date; //set date
event.URL = [NSURL URLWithString:@"url"];

//for alert set the aleram and notify the user rest is taken care by calendar for u

   EKAlarm *alaram = [[EKAlarm alloc]init];
   [alaram setAbsoluteDate:datePicker.date];
   [event addAlarm:alaram];
//finally add it to calendar
NSError *err = nil;
BOOL complete = [eventStore saveEvent:event span:EKSpanThisEvent error:&err];
if(err)
{
    NSLog(@"error in storing event");
}
else
    NSLog(@"successfully added");

if(complete)
{
    NSLog(@"successfully added");
}
else
{
    NSLog(@"error in storing event");
Sishu
  • 1,510
  • 1
  • 21
  • 48

2 Answers2

4

i am posting the code related to adding events to calendar and setting the remainder time hope u can get some idea


 - (void)addEventToCalendar
 {

    EKEventStore *eventStore = [[EKEventStore alloc]init];
    if([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)])            {
// iOS 6 and later
[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted,   NSError *error) {
    if (granted){

    //for IOS > 6.0
   EKEvent *event = [EKEvent eventWithEventStore:eventStore];
   [event setCalendar:[eventStore defaultCalendarForNewEvents]];

  //no need to fill all fill which one u want to set
   event.title =@"eventTitle";
   event.location = @"eventLocation";
   event.notes = @eventNote";
   event.startDate =  eventStartDate; //set date
   event.endDate = eventEndTime;
   event.URL = [NSURL URLWithString:@"url"];

  //for alert set the aleram and notify the user rest is taken care by calendar for u 

   switch (evetReminder) {   //set alaram for 5mins, 15mins ,20mins etc
    case 0:
        self.selectedAlertSetting = @"None";
        break;

    case 1:
    {
        EKAlarm *alaram = [[EKAlarm alloc]init];
        [alaram setAbsoluteDate:eventStartDate];
        [event addAlarm:alaram];
        [alaram release];
        break;
    }


    case 2:
    {
        NSTimeInterval aInterval = -5 *60;
        EKAlarm *alaram = [EKAlarm alarmWithRelativeOffset:aInterval];
        [event addAlarm:alaram];
        break;
    }
    case 3:
    {
        NSTimeInterval aInterval = -15 * 60;
        EKAlarm *alaram = [EKAlarm alarmWithRelativeOffset:aInterval];
        [event addAlarm:alaram];
        break;
    }
    case 4:
    {
        NSTimeInterval aInterval = -30 * 60;
        EKAlarm *alaram = [EKAlarm alarmWithRelativeOffset:aInterval];
        [event addAlarm:alaram];
        break;
    }
    case 5:
    {
        NSTimeInterval aInterval = -1 * 60 * 60;
        EKAlarm *alaram = [EKAlarm alarmWithRelativeOffset:aInterval];
        [event addAlarm:alaram];
        break;
    }
    case 6:
    {
        NSTimeInterval aInterval = -2 * 60 * 60;
        EKAlarm *alaram = [EKAlarm alarmWithRelativeOffset:aInterval];
        [event addAlarm:alaram];
        break;
    }

    case 7:
    {
        NSTimeInterval aInterval = -1 * 24 * 60 * 60;
        EKAlarm *alaram = [EKAlarm alarmWithRelativeOffset:aInterval];
        [event addAlarm:alaram];
        break;
    }
    case 8:
    {
        NSTimeInterval aInterval = -2 * 24 * 60 * 60;
        EKAlarm *alaram = [EKAlarm alarmWithRelativeOffset:aInterval];
        [event addAlarm:alaram];
        break;
    }
    default:
        break;
}

  //finally add it to calendar
  NSError *err = nil;
  BOOL complete = [eventStore saveEvent:event span:EKSpanThisEvent error:&err];
  if(err)
 {
    NSLog(@"error in storing event");
 }
 else
    NSLog(@"successfully added");

 if(complete)
 {
     NSLog(@"successfully added");
 }
 else
 {
    NSLog(@"error in storing event");
 }

 [eventStore release];

 }

 }];

 }
  else
 {
    //for IOS < 6.0
   // perform  same action hear
   EKEvent *event = [EKEvent eventWithEventStore:eventStore];
   [event setCalendar:[eventStore defaultCalendarForNewEvents]];

  //no need to fill all fill which one u want to set
   event.title =@"eventTitle";
   event.location = @"eventLocation";
   event.notes = @eventNote";
   event.startDate =  eventStartDate; //set date
   event.endDate = eventEndTime;
   event.URL = [NSURL URLWithString:@"url"];

  //for alert set the aleram and notify the user rest is taken care by calendar for u 

   switch (evetReminder) {   //set alaram for 5mins, 15mins ,20mins etc
    case 0:
        self.selectedAlertSetting = @"None";
        break;

    case 1:
    {
        EKAlarm *alaram = [[EKAlarm alloc]init];
        [alaram setAbsoluteDate:eventStartDate];
        [event addAlarm:alaram];
        [alaram release];
        break;
    }


    case 2:
    {
        NSTimeInterval aInterval = -5 *60;
        EKAlarm *alaram = [EKAlarm alarmWithRelativeOffset:aInterval];
        [event addAlarm:alaram];
        break;
    }
    case 3:
    {
        NSTimeInterval aInterval = -15 * 60;
        EKAlarm *alaram = [EKAlarm alarmWithRelativeOffset:aInterval];
        [event addAlarm:alaram];
        break;
    }
    case 4:
    {
        NSTimeInterval aInterval = -30 * 60;
        EKAlarm *alaram = [EKAlarm alarmWithRelativeOffset:aInterval];
        [event addAlarm:alaram];
        break;
    }
    case 5:
    {
        NSTimeInterval aInterval = -1 * 60 * 60;
        EKAlarm *alaram = [EKAlarm alarmWithRelativeOffset:aInterval];
        [event addAlarm:alaram];
        break;
    }
    case 6:
    {
        NSTimeInterval aInterval = -2 * 60 * 60;
        EKAlarm *alaram = [EKAlarm alarmWithRelativeOffset:aInterval];
        [event addAlarm:alaram];
        break;
    }

    case 7:
    {
        NSTimeInterval aInterval = -1 * 24 * 60 * 60;
        EKAlarm *alaram = [EKAlarm alarmWithRelativeOffset:aInterval];
        [event addAlarm:alaram];
        break;
    }
    case 8:
    {
        NSTimeInterval aInterval = -2 * 24 * 60 * 60;
        EKAlarm *alaram = [EKAlarm alarmWithRelativeOffset:aInterval];
        [event addAlarm:alaram];
        break;
    }
    default:
        break;
  }

  //finally add it to calendar
  NSError *err = nil;
  BOOL complete = [eventStore saveEvent:event span:EKSpanThisEvent error:&err];
  if(err)
 {
    NSLog(@"error in storing event");
 }
 else
    NSLog(@"successfully added");

 if(complete)
 {
     NSLog(@"successfully added");
 }
 else
 {
    NSLog(@"error in storing event");
 }



[eventStore release];
  }

 }


Shankar BS
  • 8,394
  • 6
  • 41
  • 53
  • error = Error Domain=EKErrorDomain Code=1 "No calendar has been set." UserInfo=0x1cdefd90 {NSLocalizedDescription=No calendar has been set.}...I m getting this error:(@shan – Sishu Sep 27 '13 at 05:51
  • wait i will check once – Shankar BS Sep 27 '13 at 05:52
  • still getting error i have posted the used code as well DefaultCalendarForNewEvents failed: Error Domain=EKCADErrorDomain Code=1013 "The operation couldn’t be completed. (EKCADErrorDomain error 1013.)" 2013-09-27 11:37:57.938 EventAlarm[2444:907] error in storing event 2013-09-27 11:37:57.947 EventAlarm[2444:907] error in storing event – Sishu Sep 27 '13 at 06:11
  • let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/38146/discussion-between-shan-and-ioskills) – Shankar BS Sep 27 '13 at 06:12
1

Here is the working code ..:)

  EKEventStore *eventStore = [[EKEventStore alloc] init] ;
  EKEvent *event = [EKEvent eventWithEventStore:eventStore];
   if([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]) {
    // iOS 6 and later
    [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted,   NSError *error) {
        if (granted){
            //---- codes here when user allow your app to access theirs' calendar.
            [event setCalendar:[eventStore defaultCalendarForNewEvents]];
            //no need to fill all fill which one u want to set
            event.title =@"eventTitle";
            event.location = @"eventLocation";
            event.notes = @"eventNote";
            event.startDate =  datePicker.date; //set date
            event.URL = [NSURL URLWithString:@"url"];
            NSDate *newDate = [datePicker.date dateByAddingTimeInterval:24.0f * 60.0f * 60.0f + 120.0f];
            event.endDate= newDate ;
            //for alert set the aleram and notify the user rest is taken care by calendar for u
            EKAlarm *alaram = [[EKAlarm alloc]init];

            [alaram setAbsoluteDate:datePicker.date];
            [event addAlarm:alaram];
            //finally add it to calendar
            NSError *err = nil;
            BOOL complete = [eventStore saveEvent:event span:EKSpanThisEvent error:&err];
            if(err)
            {
                NSLog(@"error in storing event");
            }
            else
                NSLog(@"successfully added");
            if(complete)
            {
                NSLog(@"successfully added");
            }
            else
            {
                NSLog(@"error in storing event");
            }
        }else
        {
            //----- codes here when user NOT allow your app to access the calendar.
        }
    }];
}
else {
    //---- codes here for IOS < 6.0.
    //[self performCalendarActivity:eventStore];
}
Sishu
  • 1,510
  • 1
  • 21
  • 48