Recherche…
Demande de permission
Votre application ne peut pas accéder à vos rappels et à votre calendrier sans autorisation. Au lieu de cela, il doit afficher une alerte à l'utilisateur, lui demandant d'accorder l'accès aux événements pour l'application.
Pour commencer, importez le framework EventKit
:
Rapide
import EventKit
Objectif c
#import <EventKit/EventKit.h>
Faire un EKEventStore
Ensuite, nous EKEventStore
un objet EKEventStore
. C'est l'objet à partir duquel nous pouvons accéder aux données du calendrier et des rappels:
Rapide
let eventStore = EKEventStore()
Objectif c
EKEventStore *eventStore = [[EKEventStore alloc] init];
Remarque
Faire un objet
EKEventStore
chaque fois que nous avons besoin d'accéder au calendrier n'est pas efficace. Essayez de le faire une fois et utilisez-le partout dans votre code.
Vérifier les disponibilités
La disponibilité a trois statuts différents: Autorisé, Refusé et Non déterminé. Non déterminé signifie que l'application doit accorder l'accès.
Pour vérifier la disponibilité, nous utilisons la méthode authorizationStatusForEntityType()
de l'objet EKEventStore
:
Rapide
switch EKEventStore.authorizationStatusForEntityType(EKEntityTypeEvent){
case .Authorized: //...
case .Denied: //...
case .NotDetermined: //...
default: break
}
Objectif c
switch ([EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent]){
case EKAuthorizationStatus.Authorized:
//...
break;
case EKAuthorizationStatus.Denied:
//...
break;
case EKAuthorizationStatus.NotDetermined:
//...
break;
default:
break;
}
Demande de permission
Placez le code suivant dans le cas NotDetermined
:
Rapide
eventStore.requestAccessToEntityType(EKEntityTypeEvent, completion: { [weak self] (userGrantedAccess, _) -> Void in
if userGrantedAccess{
//access calendar
}
}
Accéder à différents types de calendriers
Accéder au tableau des calendriers
Pour accéder au tableau de EKCalendar
, nous utilisons la méthode calendarsForEntityType
:
Rapide
let calendarsArray = eventStore.calendarsForEntityType(EKEntityType.Event) as! [EKCalendar]
Itérer à travers les calendriers
Utilisez simplement un simple for
boucle:
Rapide
for calendar in calendarsArray{
//...
}
Accéder au titre et à la couleur du calendrier
Rapide
let calendarColor = UIColor(CGColor: calendar.CGColor)
let calendarTitle = calendar.title
Objectif c
UIColor *calendarColor = [UIColor initWithCGColor: calendar.CGColor];
NSString *calendarTitle = calendar.title;
Ajouter un événement
Création de l'objet événement
Rapide
var event = EKEvent(eventStore: eventStore)
Objectif c
EKEvent *event = [EKEvent initWithEventStore:eventStore];
Définition du calendrier, du titre et des dates associés
Rapide
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
Ajout d'événement au calendrier
Rapide
try {
do eventStore.saveEvent(event, span: EKSpan.ThisEvent)
} catch let error as NSError {
//error
}
Objectif c
NSError *error;
BOOL *result = [eventStore saveEvent:event span:EKSpanThisEvent error:&error];
if (result == NO){
//error
}