在如今实际开发中,我们会有一种需求---通过自己的app往系统自带的日历中添加提醒事件.
一: 首先上最后效果图:
WechatIMG7.jpeg
下图是关于添加事件的详情
WechatIMG8.jpeg
这里可以设置提前多长时间提醒该事件,在日历事件详情中这里可以看到
Paste_Image.png
最后事件到提前时间内,会在手机的通知栏推送消息通知,见下图
WechatIMG9.jpeg
二: 下面具体开始具体怎么实现的吧!
首先上代码下载地址:https://github.com/Andrewliu20/Demo.git 下载可以先体验一下.
功能的事件主要在EventCalendar类实现,下图是类的详情:
EventCalendar.h
Paste_Image.png
/**
将App事件添加到系统日历提醒事项,实现闹铃提醒的功能
@param title 事件标题 ---这里是标题
@param location 事件位置 -- 这里可以添加位置,也可以其他想显示的内容(系统日历中是地址)
@param startDate 开始时间 -- 事件的开始日期和系统日历设置事件开始事件对应
@param endDate 结束时间 -- 事件的结束日期和系统日历设置事件开始事件对应
@param allDay 是否全天 -- 和系统设置全天一致
@param alarmArray 闹钟集合 -- 提前提醒的时间集合(这里可以设置多个提醒事件点,时间点单位为秒,如果提前提醒需要设置为负,比如-3600 就是提前一个小时提醒)
*/
下图是EventCalendar.m的具体实现
Paste_Image.png
ps:在ios10以后,对于使用系统自带的隐私数据,比如相机,日历等,需要添加权限通知,这里只用到日历,只需要在xcode中的info.plist中添加上下面这句话,不然统会crash.
NSCalendarsUsageDescription
App需要您的同意,才能访问日历
三: 实际使用,在你的项目中把EventCalendar导入要实现的地方即可.下图是demo中实现的实现.
Paste_Image.png
ps:
这里是事件开始时间是[NSDate dateWithTimeInterval:3600 sinceDate:[NSDate date]] 3600 代表当前时间的的一个小时为开始事件,结束事件类似.
alarmArray 闹钟集合 我这里就添加一个,-3600 代表提前一个小时提示.
喜欢请留爪! thx!!