IOS/Objective-C:EventKit EKReminders 与 EKEvents 对比

IOS/Objective-C:EventKit EKReminders compared with EKEvents

我正在尝试使用 EventKit,但对事件与提醒的比较感到困惑。

您需要获得单独的权限才能访问提醒和事件吗?

我知道有self.eventStorerequestAccessToEntityType:EKEntityTypeReminder还有requestAccessToEntityType:EKEntityTypeEvent

以下是两者的方法。但是对于如此密切相关的事情必须征求两次许可似乎有点过分了。

-(void)requestAccessToEvents{

    [self.eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
        if (error == nil) {
            // Store the returned granted value.
            self.grantedEvents = granted;
            [[NSUserDefaults standardUserDefaults] setValue:[NSNumber numberWithBool:granted] forKey:@"eventsAccessGranted"];

        }
        else{
            // In case of error, just log its description to the debugger.
            NSLog(@"%@", [error localizedDescription]);

        }
    }];
}
-(void) requestAccessToReminders
{

    [self.eventStore requestAccessToEntityType:EKEntityTypeReminder completion:^(BOOL granted, NSError *error)
     {
         if (error == nil) {
             // Store the returned granted value.
             self.grantedReminders = granted;
             [[NSUserDefaults standardUserDefaults] setValue:[NSNumber numberWithBool:granted] forKey:@"remindersAccessGranted"];

         }
         else{
             // In case of error, just log its description to the debugger.
             NSLog(@"%@", [error localizedDescription]);
         }

         if (granted)
         {
             importEvents * __weak weakSelf = self;
            //ensure code will be executed from the main queue
             dispatch_async(dispatch_get_main_queue(), ^{

                 //  [weakSelf aMethodToUpdateUIFetchEvents];//method located in viewController
             });
         }
     }];
}

感谢您的任何建议。

EKEntityTypeEvent 用于进入用户日历的事件。

EKEntityTypeReminder 用于转到用户提醒的提醒。

每个都需要自己的许可请求。用户可能允许访问其中一个,但不允许访问另一个。忽略 API 的相似性和相关性。对于用户来说,它们是完全不同的两个东西。