oc的日历提醒机制

- (IBAction)addEventClick:(UIButton *)sender {

    //需要导入EventKit.framework 为了让提醒事项和日历事件能工作起来,你需要依赖于EventKit。你将也需要一个持久化的存储来保存备忘录项。因此,EventKit为你提供了这个:EKEventStore。一个EKEventStore允许你从用户日历数据库中更新、创建、编辑和删除事件。

    

//    提醒事项和日历数据都存储在日历数据库。在理想情况下,你整个应用将只有一个事件存储器,而且你只能实例化其一次,那就是EKEventStore对象需要一个相对比较长的时间去初始化和释放的原因。为每个事件相关的任务去初始化和释放每一个单独分离的事件存储器是极无效率的一件事情,因此,你需要一个单独的事件存储器保证到你应用能运行多久,其就能工作到多久!

    //初始化事件 EKEventStore需要很长的时间初始化和释放在你的整个应用程序中只能保存一份初始化

    EKEventStore *eventStore = [[EKEventStore alloc] init];

    

    

    

//    EKAuthorizationStatus authorizationStatus = [EKEventStore authorizationStatusForEntityType:EKEntityTypeReminder]; 获取系统现在存储器的授权情况

//    EKEntityTypeReminder转换成你获取提醒事项的事件类型然后再评估

    

    if ([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]) {

        

        [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError * _Nullable error) {

        

            dispatch_async(dispatch_get_main_queue(), ^{

               

                

                if (error) {

                    

                }else if (!granted){

                  //被用户拒绝

                    

                }else

                {

                

                    //时间保存到日历

                    

                    EKEvent *event = [EKEvent eventWithEventStore:eventStore];

                    

                    event.title = @"时间标题";

                    

                    event.location = @"刻录机";

                    

                    NSDateFormatter *tempFOrmatter = [[NSDateFormatter alloc] init];

                    [tempFOrmatter setDateFormat:@"yyyy:MM:dd hh:mm"];

                    

                    event.startDate = [tempFOrmatter dateFromString:@"2015-11-05  17:00"];

                    

                    event.endDate = [tempFOrmatter dateFromString:@"2015-11-05  17:00"];

                    

                    

                    

                    event.allDay = YES;

                    

                    //添加提醒

                    [event addAlarm:[EKAlarm alarmWithRelativeOffset:60.0f * -60.0f*1 ]];

                    

                    [event addAlarm:[EKAlarm alarmWithRelativeOffset:60.0f-15.0f]];

                    

                    [event setCalendar:[eventStore defaultCalendarForNewEvents]];

                

                    NSError *err;

                    

                    [eventStore saveEvent:event span:EKSpanThisEvent error:&err];

                    

                    

                    NSLog(@"保存成功");

                    

                }

                

            });

            

            

        }];

        

        

        NSArray *calendars = [eventStore calendarsForEntityType:EKEntityTypeReminder];//获取所有的提醒事件

        

        

        

        NSLog(@"提醒事件=======%@",calendars);

    }

    

   

    

}



你可能感兴趣的:(iOS)