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
}