수색…


허가 요청

앱에서 허가없이 미리 알림과 캘린더에 액세스 할 수 없습니다. 대신 사용자에게 앱에 대한 이벤트에 대한 액세스 권한을 요청하라는 경고를 표시해야합니다.

시작하려면 EventKit 프레임 워크를 가져 오십시오.

빠른

import EventKit

목표 -C

#import <EventKit/EventKit.h>

EKEventStore 만들기

그런 다음 EKEventStore 객체를 만듭니다. 캘린더 및 미리 알림 데이터에 액세스 할 수있는 개체입니다.

빠른

let eventStore = EKEventStore()

목표 -C

EKEventStore *eventStore = [[EKEventStore alloc] init];

노트

달력에 액세스해야 할 때마다 EKEventStore 객체를 만드는 것이 효율적이지 않습니다. 한 번 만들어 코드에서 사방에 사용하십시오.

가능 여부 확인

가용성에는 권한 부여 됨, 거부 됨 및 결정되지 않음의 세 가지 상태가 있습니다. 결정되지 않음은 앱이 액세스 권한을 부여해야 함을 의미합니다.

가용성을 확인하기 위해 EKEventStore 객체의 authorizationStatusForEntityType() 메소드를 사용합니다.

빠른

switch EKEventStore.authorizationStatusForEntityType(EKEntityTypeEvent){
    case .Authorized: //...
    case .Denied: //...
    case .NotDetermined: //...
    default: break
}

목표 -C

switch ([EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent]){
    case EKAuthorizationStatus.Authorized:
        //...
        break;
    case EKAuthorizationStatus.Denied:
        //...
        break;
    case EKAuthorizationStatus.NotDetermined:
        //...
        break;
    default:
        break;
}

허가 요청

NotDetermined 케이스에 다음 코드를 입력합니다.

빠른

eventStore.requestAccessToEntityType(EKEntityTypeEvent, completion: { [weak self] (userGrantedAccess, _) -> Void in
    if userGrantedAccess{
        //access calendar
    }
}

다른 유형의 캘린더 액세스

캘린더 배열 액세스

EKCalendar 의 배열에 액세스하려면, calendarsForEntityType 메소드를 사용합니다.

빠른

let calendarsArray = eventStore.calendarsForEntityType(EKEntityType.Event) as! [EKCalendar]

캘린더 반복하기

for 루프를 사용하면됩니다.

빠른

for calendar in calendarsArray{
    //...
}

캘린더 제목과 색상에 액세스하기

빠른

let calendarColor = UIColor(CGColor: calendar.CGColor)
let calendarTitle = calendar.title

목표 -C

UIColor *calendarColor = [UIColor initWithCGColor: calendar.CGColor];
NSString *calendarTitle = calendar.title;

일정 추가

이벤트 객체 만들기

빠른

var event = EKEvent(eventStore: eventStore)

목표 -C

EKEvent *event = [EKEvent initWithEventStore:eventStore];

관련 캘린더, 제목 및 날짜 설정

빠른

event.calendar = calendar
event.title = "Event Title"
event.startDate = startDate //assuming startDate is a valid NSDate object
event.endDate = endDate //assuming endDate is a valid NSDate object

캘린더에 일정 추가하기

빠른

try {
    do eventStore.saveEvent(event, span: EKSpan.ThisEvent)
} catch let error as NSError {
    //error
}

목표 -C

NSError *error;
BOOL *result = [eventStore saveEvent:event span:EKSpanThisEvent error:&error];
if (result == NO){
    //error
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow