2013-01-11 21 views
5
EKEventStore *eventStore = [[UpdateManager sharedUpdateManager] eventStore]; 

if ([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]) 
{ 
    [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) 
    { 
     if (granted)... 

Chcę poprosić użytkownika o pozwolenie na dodanie wydarzenia do jego kalendarza. Czy po przyznaniu muszę ponownie poprosić o pozwolenie, gdy chcę na przykład usunąć wydarzenie (w innej sesji po zamknięciu i ponownym otwarciu aplikacji) lub czy jest to tylko kwestia czasu wolnego?requestAccessToEntityType - raz lub za każdym razem?

Jeśli jest to jednorazowa sprawa, czy mogę po prostu umieścić ją w ViewDidLoad na pierwszym obiedzie, aby "się go pozbyć"?

+1

To ** absolutnie nic ** do czynienia z Xcode w ogóle. –

Odpowiedz

16

Wystarczy tylko zadzwonić raz:

BOOL needsToRequestAccessToEventStore = NO; // iOS 5 behavior 
EKAuthorizationStatus authorizationStatus = EKAuthorizationStatusAuthorized; // iOS 5 behavior 
if ([[EKEventStore class] respondsToSelector:@selector(authorizationStatusForEntityType:)]) { 
    authorizationStatus = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent]; 
    needsToRequestAccessToEventStore = (authorizationStatus == EKAuthorizationStatusNotDetermined); 
} 

if (needsToRequestAccessToEventStore) { 
    [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {    
     if (granted) { 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       // You can use the event store now 
      }); 
     } 
    }]; 
} else if (authorizationStatus == EKAuthorizationStatusAuthorized) { 
    // You can use the event store now 
} else { 
    // Access denied 
} 

Nie należy zrobić przy pierwszym uruchomieniu, choć. Żądaj dostępu tylko wtedy, gdy go potrzebujesz, a to nie jest tak, dopóki użytkownik nie zdecyduje się dodać wydarzenia.

+0

Czy po tym czasie powinienem zobaczyć podpowiedź na symulatorze iOS 6? Ponieważ teraz nie mam i moja prywatność w kalendarzu jest pusta – Segev

+0

@Sha To normalne. Alerty dotyczące prywatności nie są wyświetlane w symulatorze iPhone'a. Testuj na rzeczywistym urządzeniu. –

+0

Nie mam pod ręką urządzenia ios 6. Dlaczego mieliby umieścić sekcję prywatności w symulatorze, który brzmi: "Tutaj pojawią się aplikacje, które zażądały dostępu do twoich kalendarzy"? czuje się źle – Segev

Powiązane problemy