美文网首页iOS 宝典iOS
iOS开发 -- 通过app向手机自带的日历中添加事件提醒

iOS开发 -- 通过app向手机自带的日历中添加事件提醒

作者: andrewliu20 | 来源:发表于2016-12-28 11:55 被阅读2341次

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

    <key>NSCalendarsUsageDescription</key>
    <string>App需要您的同意,才能访问日历</string>
    三: 实际使用,在你的项目中把EventCalendar导入要实现的地方即可.下图是demo中实现的实现.

    Paste_Image.png

    ps:
    这里是事件开始时间是[NSDate dateWithTimeInterval:3600 sinceDate:[NSDate date]] 3600 代表当前时间的的一个小时为开始事件,结束事件类似.
    alarmArray 闹钟集合 我这里就添加一个,-3600 代表提前一个小时提示.

    喜欢请留爪! thx!!

    相关文章

      网友评论

      • 温柔vs先生:如何删除这个日历事件呢
        温柔vs先生:你看我的简书 ,里面有一个关于日历的
        6a40e57ba3d0:同问这个问题,删除时没法准确获知要删除的事件下标在系统日历事件数组的下标,比如说认为在系统日历添加一个事件,下标会发生改变!
      • 27b20a4f4e48:楼主,这个功能,可以实现多次事件一次添加么?比如2、3、4号每天添加一次
        andrewliu20:@苍天有期 可以
      • mymirror:很奇怪,为什么到规定时间内,没有消息通知下
      • devileatapple:事件有问题。看了下事件好像错误No calendar has been set.
      • VanChan:怎么清楚事件呢

      本文标题:iOS开发 -- 通过app向手机自带的日历中添加事件提醒

      本文链接:https://www.haomeiwen.com/subject/xgkyvttx.html