在如今實(shí)際開發(fā)中,我們會(huì)有一種需求---通過自己的app往系統(tǒng)自帶的日歷中添加提醒事件.
一: 首先上最后效果圖:
下圖是關(guān)于添加事件的詳情
這里可以設(shè)置提前多長(zhǎng)時(shí)間提醒該事件,在日歷事件詳情中這里可以看到
最后事件到提前時(shí)間內(nèi),會(huì)在手機(jī)的通知欄推送消息通知,見下圖
二: 下面具體開始具體怎么實(shí)現(xiàn)的吧!
首先上代碼下載地址:https://github.com/Andrewliu20/Demo.git 下載可以先體驗(yàn)一下.
功能的事件主要在EventCalendar類實(shí)現(xiàn),下圖是類的詳情:
EventCalendar.h
/**
- 將App事件添加到系統(tǒng)日歷提醒事項(xiàng)灶挟,實(shí)現(xiàn)鬧鈴提醒的功能
- @param title 事件標(biāo)題 ---這里是標(biāo)題
- @param location 事件位置 -- 這里可以添加位置,也可以其他想顯示的內(nèi)容(系統(tǒng)日歷中是地址)
- @param startDate 開始時(shí)間 -- 事件的開始日期和系統(tǒng)日歷設(shè)置事件開始事件對(duì)應(yīng)
- @param endDate 結(jié)束時(shí)間 -- 事件的結(jié)束日期和系統(tǒng)日歷設(shè)置事件開始事件對(duì)應(yīng)
- @param allDay 是否全天 -- 和系統(tǒng)設(shè)置全天一致
- @param alarmArray 鬧鐘集合 -- 提前提醒的時(shí)間集合(這里可以設(shè)置多個(gè)提醒事件點(diǎn),時(shí)間點(diǎn)單位為秒,如果提前提醒需要設(shè)置為負(fù),比如-3600 就是提前一個(gè)小時(shí)提醒)
*/
下圖是EventCalendar.m的具體實(shí)現(xiàn)
ps:在ios10以后,對(duì)于使用系統(tǒng)自帶的隱私數(shù)據(jù),比如相機(jī),日歷等,需要添加權(quán)限通知,這里只用到日歷,只需要在xcode中的info.plist中添加上下面這句話,不然統(tǒng)會(huì)crash.
<key>NSCalendarsUsageDescription</key>
<string>App需要您的同意,才能訪問日歷</string>
三: 實(shí)際使用,在你的項(xiàng)目中把EventCalendar導(dǎo)入要實(shí)現(xiàn)的地方即可.下圖是demo中實(shí)現(xiàn)的實(shí)現(xiàn).
ps:
這里是事件開始時(shí)間是[NSDate dateWithTimeInterval:3600 sinceDate:[NSDate date]] 3600 代表當(dāng)前時(shí)間的的一個(gè)小時(shí)為開始事件,結(jié)束事件類似.
alarmArray 鬧鐘集合 我這里就添加一個(gè),-3600 代表提前一個(gè)小時(shí)提示.
喜歡請(qǐng)留爪! thx!!