私のアプリでは、アプリが起動するとすぐにカレンダーを読んでいます。そのため、ガイドラインに従って初めて、アプリがカレンダーへのアクセスを要求しましたが、何が起こっているのかというと、カレンダーへのアクセスは表示されず、スプラッシュ画面しか表示されません。
アプリを閉じると、携帯電話のカレンダーへのアクセスを許可するためのポップアップが表示されます。私はそれにアクセスを許可し、その後はすべて正常に動作します。
これが私のコードです:
-(NSArray*) listOfEventsInCalendar
{
_eventStore = [[EKEventStore alloc]init];
__block NSArray * events;
if ([_eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)])
{
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
/* iOS Settings > Privacy > Calendars > MY APP > ENABLE | DISABLE */
[_eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error)
{
if ( granted )
{
NSDate * startDate = [NSDate date];
NSDate * endDate = [NSDate distantFuture];
NSPredicate * predicate = [_eventStore predicateForEventsWithStartDate:startDate endDate:endDate calendars:nil];
events = [_eventStore eventsMatchingPredicate:predicate];
if (events) {
insideArray = [self castEvents:events];
}
else{
NSLog(@"No Events found in the calendar");
}
}
else
{
NSLog(@"User has not granted permission!");
}
dispatch_semaphore_signal(sema);
}];
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
}
return insideArray;
}
私は何を間違っていますか??
ありがとう、