博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 日历提醒 (类似天猫淘宝的 利用代码添加事件到系统日历中)
阅读量:4522 次
发布时间:2019-06-08

本文共 4477 字,大约阅读时间需要 14 分钟。

最近项目要用到类似天猫淘宝的日历提醒,网上查找资料看到这样的一个博客

- (void)saveEvent:(id)sender {                //事件市场    EKEventStore *eventStore = [[EKEventStore alloc] init];        //6.0及以上通过下面方式写入事件    if ([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)])    {        // the selector is available, so we must be on iOS 6 or newer        [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {            dispatch_async(dispatch_get_main_queue(), ^{                if (error)                {                    //错误细心                    // display error message here                }                else if (!granted)                {                    //被用户拒绝,不允许访问日历                    // display access denied error message here                }                else                {                    // access granted                    // ***** do the important stuff here *****                                        //事件保存到日历                                                            //创建事件                    EKEvent *event  = [EKEvent eventWithEventStore:eventStore];                    event.title     = @"哈哈哈,我是日历事件啊";                    event.location = @"我在杭州西湖区留和路";                                        NSDateFormatter *tempFormatter = [[NSDateFormatter alloc]init];                    [tempFormatter setDateFormat:@"dd.MM.yyyy HH:mm"];                                        event.startDate = [[NSDate alloc]init ];                    event.endDate   = [[NSDate alloc]init ];                    event.allDay = YES;                                        //添加提醒                    [event addAlarm:[EKAlarm alarmWithRelativeOffset:60.0f * -60.0f * 24]];                    [event addAlarm:[EKAlarm alarmWithRelativeOffset:60.0f * -15.0f]];                                        [event setCalendar:[eventStore defaultCalendarForNewEvents]];                    NSError *err;                    [eventStore saveEvent:event span:EKSpanThisEvent error:&err];                                        UIAlertView *alert = [[UIAlertView alloc]                                          initWithTitle:@"Event Created"                                          message:@"Yay!?"                                          delegate:nil                                          cancelButtonTitle:@"Okay"                                          otherButtonTitles:nil];                    [alert show];                                        NSLog(@"保存成功");                                    }            });        }];    }    else    {        // this code runs in iOS 4 or iOS 5        // ***** do the important stuff here *****                //4.0和5.0通过下述方式添加                //保存日历        EKEvent *event  = [EKEvent eventWithEventStore:eventStore];        event.title     = @"哈哈哈,我是日历事件啊";        event.location = @"我在杭州西湖区留和路";                NSDateFormatter *tempFormatter = [[NSDateFormatter alloc]init];        [tempFormatter setDateFormat:@"dd.MM.yyyy HH:mm"];                event.startDate = [[NSDate alloc]init ];        event.endDate   = [[NSDate alloc]init ];        event.allDay = YES;                        [event addAlarm:[EKAlarm alarmWithRelativeOffset:60.0f * -60.0f * 24]];        [event addAlarm:[EKAlarm alarmWithRelativeOffset:60.0f * -15.0f]];                [event setCalendar:[eventStore defaultCalendarForNewEvents]];        NSError *err;        [eventStore saveEvent:event span:EKSpanThisEvent error:&err];                UIAlertView *alert = [[UIAlertView alloc]                              initWithTitle:@"Event Created"                              message:@"Yay!?"                              delegate:nil                              cancelButtonTitle:@"Okay"                              otherButtonTitles:nil];        [alert show];                NSLog(@"保存成功");            }}

写的比较清晰明了,但是在开发过程中,发现如果有多个日历提醒,在取消或者删除这个提醒时怎么区别这个日历事件有一个这样的方法

- (nullable EKEvent *)eventWithIdentifier:(NSString *)identifier;

但是这里需要获取一个identifier  那么问题来了这个identifier到底要怎么获取呢、又是在哪里获取的呢?

然后我发现 在我们添加事件到日历时

 

 [self.store saveEvent:event span:EKSpanThisEvent error:&err];

会产生一个event.eventIdentifier ,蛋疼的是当你打印输出这个identifier时你会发现,他是随机生成的一个字符串,那么我们该如何来保存这个字符串呢,我想到的是两种方法:

1、因为字符串是在添加日历时间成功以后,所以此时我们掉一下后台的接口,让后台帮我们存储这个字段,当我们删除的时候再次掉接口让他们返给我们;

2、这中方法没有实施,感兴趣的同学可以试一下,就是把这个字符串保存到本地数据库,当然是要以字典的形式保存,为了删除时找到对应的日历事件。

目前我的项目中用的就是第一种方法,已经完美解决问题,不明白的同学可以回复一下,我会尽量一一回复大家。

转载于:https://www.cnblogs.com/wubangbang/p/6362972.html

你可能感兴趣的文章
XJTUOJ wmq的A×B Problem FFT/NTT
查看>>
BZOJ 1042: [HAOI2008]硬币购物 容斥+背包
查看>>
常用yum命令小结
查看>>
div+CSS浏览器兼容问题整理
查看>>
Cesium demo
查看>>
FIFO先进先出,FILO先进后出
查看>>
温顾知新系列-JAVA网络编程系统(1)- 流
查看>>
常见对称加密算法
查看>>
2018-2019-1 20165320 20165325 20165337 实验一 开发环境的熟悉
查看>>
HTML5 学习
查看>>
2018服务端架构师技术图谱
查看>>
windows8 的 “开始”界面有意思
查看>>
[jzoj 5343] [NOIP2017模拟9.3A组] 健美猫 解题报告 (差分)
查看>>
创建文件
查看>>
常见的四种排序算法
查看>>
MAC 配置 Android adb 环境变量
查看>>
java中split()特殊符号"." "|" "*" "\" "]"
查看>>
关于地铁网络
查看>>
mysql group_concat函数
查看>>
能不能用javascript实现素数求和问题呢?
查看>>