Я реализую возможность добавлять и удалять созданные пользователем события из календаря iOS из своего приложения. Я закодировал запрос на разрешение доступа к календарю, когда пользователь создает событие, и он отлично работает. Я сохраняю событие на сервере и разрешаю им позже удалить событие, а когда это происходит, я также удаляю событие из календаря. Возможно, кто-то может создать событие вне этого приложения, открыть приложение, а затем удалить встречу, полученную с сервера. В этом случае в календаре не хранится событие, но все равно нужно посмотреть, существует ли оно, чтобы попытаться удалить его, и оно терпит неудачу, потому что я не запрашивал разрешения пользователя на получение доступа к календарю в этом случае.
Но я не хочу спрашивать у пользователя разрешение при удалении, потому что пользователь понятия не имеет, зачем приложению нужен доступ к календарю, потому что они никогда не знали, что оно может сохранить встречу в календаре - они создали его на веб-сайте и нет причин, по которым они должны предоставить его в тот момент, потому что это все равно ничего не даст.
Поэтому мой вопрос: можно ли определить, имеет ли ваше приложение в настоящее время доступ к календарю, не отправляя запрос, который приведет к отображению автоматического предупреждения пользователю в случае, если разрешение не предоставлено - см. код запроса ниже? Я просто хочу найти событие, чтобы попытаться удалить его, только если у меня уже есть доступ к календарю, а если у меня его нет, я не буду пытаться ничего удалить.
[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (granted) {
//already have access or user tapped on Allow in popup
}
...
EKEventSource authorizationStatusForEntityType:
. - person rmaddy   schedule 02.07.2014