import EventKit
//EKEntityType.Event: 캘린더 이벤트, EKEntityType.Reminder: 미리 알림
var eventStore = EKEventStore()
let status = EKEventStore.authorizationStatusForEntityType(EKEntityType.Event)
switch (status) {
case .NotDetermined:
print("캘린더 접근 요청")
requestCalendarAccess()
case .Restricted,
.Denied:
print("캘린더 접근 거부")
case .Authorized:
print("캘린더 접근 성공")
requestCalendarEntity()
}
func requestCalendarAccess() {
/// 최초에만 사용자 에게 캘린더 접근 허용 여부를 묻는다.
eventStore.requestAccessToEntityType(.Event) { (granted, error) in
if granted {
print("YES!!")
} else {
print("NO!!")
}
}
}
func requestCalendarEntity() {
eventStore.requestAccessToEntityType(.Event, completion: {
(granted, error) in
if (granted) && (error == nil) {
/// 캘린더 목록 가져오기
let calenders = self.eventStore.calendarsForEntityType(EKEntityType.Event)
for calender in calenders {
print(calender.title)
}
/// 기본 캘린더에 신규 이벤트 추가
let event:EKEvent = EKEvent(eventStore: self.eventStore)
event.title = "Test Title"
event.startDate = NSDate()
event.endDate = NSDate()
event.notes = "This is a note"
event.calendar = self.eventStore.defaultCalendarForNewEvents
do {
try self.eventStore.saveEvent(event, span: .ThisEvent)
} catch {
}
/// 신규 캘린더 추가
let calender = EKCalendar(forEntityType: .Event, eventStore: self.eventStore)
calender.title = "나만의 달력"
let sources = self.eventStore.sources
for source in sources {
if source.sourceType == .Local {
calender.source = source
}
}
do {
try self.eventStore.saveCalendar(calender, commit: true)
} catch {
}
}
})
}
댓글을 달아 주세요