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
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow