工具代码地址:
https://github.com/PZXforXcode/PZXEventAddManagera
使用方法:
将PZXEventAddManager文件夹放入项目中
添加权限:
Privacy - Calendars Usage Description
Privacy - Reminders Usage Description
PZXEventAddManager.sharedManager.ReminderCalendarAdd(title: "事项列表")
PZXEventAddManager.sharedManager.reminderAdd(calendartitle: "事项列表", title: "测试标题", notes: "测试备注", date: Date())
可添加 提醒事项,日历提醒,自定义标题,备注,提醒时间
代码解析:
1.建立EKEventStore单例
class PZXEventStore: NSObject {
static let eventStore = EKEventStore()
///用户是否授权使用日历
func isEventStatus() -> Bool {
let eventStatus = EKEventStore.authorizationStatus(for: EKEntityType.event)
if eventStatus == .denied || eventStatus == .restricted {
return false
}
return true
}
///用户是否授权使用提醒事项
func isReminderStatus() -> Bool {
let eventStatus = EKEventStore.authorizationStatus(for: EKEntityType.reminder)
if eventStatus == .denied || eventStatus == .restricted {
return false
}
return true
}
}
添加提醒事项列表
///找到提醒事项所有列表
let array = PZXEventStore.eventStore.calendars(for: .reminder)
for calendar :EKCalendar in array {
print("列表:\(calendar.title)")
//如果已经有这个calendar了 就不添加了
if calendar.title == title {
return
}
}
//添加提醒事项列表
let calendar = EKCalendar.init(for: .reminder, eventStore: PZXEventStore.eventStore);
if PZXEventStore.eventStore.sources.count == 0 { // reproducible after Reset Content and Settings
calendar.source = EKSource()
}else {
calendar.source = PZXEventStore.eventStore.defaultCalendarForNewReminders()!.source
}
//添加标题
calendar.title = title
//添加颜色
calendar.cgColor = UIColor.red.cgColor
do{
//进行添加
try PZXEventStore.eventStore.saveCalendar(calendar, commit: true)
debugPrint("成功加入")
}catch {
debugPrint(error)
}
添加提醒事项
let reminder = EKReminder.init(eventStore: PZXEventStore.eventStore);
reminder.title = title;
reminder.notes = notes
if (calendartitle.count == 0){
reminder.calendar = PZXEventStore.eventStore.defaultCalendarForNewReminders();
}else {
let array = PZXEventStore.eventStore.calendars(for: .reminder)
for calendar :EKCalendar in array {
//如果已经有这个calendar了 就不添加了
if calendar.title == calendartitle {
reminder.calendar = calendar;
}
}
}
let alarm = EKAlarm(absoluteDate: date)
reminder.addAlarm(alarm)
do {
try PZXEventStore.eventStore.save(reminder, commit: true)
} catch {
print("save reminder error: \(error)")
}
判断权限
PZXEventStore.eventStore.requestAccess(to: .reminder) { (granted, error) in
if !granted {
let alertViewController = UIAlertController(title: "提示", message: "请在iPhone的\"设置->隐私->提醒事项\"选项中,允许访问你的提醒事项。", preferredStyle: .alert)
let actionCancel = UIAlertAction(title: "取消", style: .cancel, handler: { (action) in
})
let actinSure = UIAlertAction(title: "设置", style: .default, handler: { (action) in
//跳转到系统设置主页
if let url = URL(string: UIApplication.openSettingsURLString) {
//根据iOS系统版本,分别处理
if #available(iOS 10, *) {
UIApplication.shared.open(url)
} else {
UIApplication.shared.openURL(url)
}
}
})
alertViewController.addAction(actionCancel)
alertViewController.addAction(actinSure)
// FIXME: - 弹出这个alertViewController
}
}
}
网友评论