Szukaj…


Wniosek o pozwolenie

Twoja aplikacja nie może uzyskać dostępu do przypomnień i kalendarza bez pozwolenia. Zamiast tego musi wyświetlać alert użytkownikowi, prosząc go o przyznanie dostępu do wydarzeń dla aplikacji.

Aby rozpocząć, zaimportuj środowisko EventKit :

Szybki

import EventKit

Cel C

#import <EventKit/EventKit.h>

Tworzenie EKEventStore

Następnie EKEventStore obiekt EKEventStore . To jest obiekt, z którego możemy uzyskać dostęp do danych kalendarza i przypomnień:

Szybki

let eventStore = EKEventStore()

Cel C

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

Uwaga

Tworzenie obiektu EKEventStore każdym razem, gdy potrzebujemy uzyskać dostęp do kalendarza, nie jest wydajne. Spróbuj zrobić to raz i używaj go wszędzie w kodzie.

Sprawdzanie dostępności

Dostępność ma trzy różne statusy: autoryzowany, odrzucony i nieokreślony. Nie określono oznacza, że aplikacja musi przyznać dostęp.

Aby sprawdzić dostępność, używamy metody EKEventStore authorizationStatusForEntityType() obiektu EKEventStore :

Szybki

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

Cel C

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

Wniosek o pozwolenie

Umieść następujący kod w NotDetermined przypadku:

Szybki

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

Dostęp do różnych rodzajów kalendarzy

Dostęp do szeregu kalendarzy

Aby uzyskać dostęp do tablicy EKCalendar s, używamy metody calendarsForEntityType :

Szybki

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

Iterowanie po kalendarzach

Wystarczy użyć prostej pętli for :

Szybki

for calendar in calendarsArray{
    //...
}

Dostęp do tytułu i koloru kalendarza

Szybki

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

Cel C

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

Dodawanie wydarzenia

Tworzenie obiektu zdarzenia

Szybki

var event = EKEvent(eventStore: eventStore)

Cel C

EKEvent *event = [EKEvent initWithEventStore:eventStore];

Ustawianie powiązanego kalendarza, tytułu i dat

Szybki

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

Dodawanie wydarzenia do kalendarza

Szybki

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

Cel 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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow