在如今实际开发中,我们会有一种需求---通过自己的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!!