Получение доступа к EKCalendar - PullRequest
0 голосов
/ 10 ноября 2018

В моем приложении есть переключатель, который позволяет пользователю добавлять определенные события в свою повестку дня. Я обращаюсь с этим так:

@IBAction func putInAgenda(_ sender: UISwitch) {
        let store = manager.store
        if (sender.isOn){
            store.requestAccess(to: EKEntityType.event, completion: {
                (accessGranted: Bool, error: Error?) in
                if accessGranted == true {
                    self.eventsHandler.importEventsInAgenda(id)
                } else {
                    DispatchQueue.main.async {
                        sender.isOn = false
                    }
                }
            })
        } else {
            //
        }

        shared?.set(sender.isOn, forKey: "putInAgenda")
        shared?.synchronize()
    }

Однако, вопреки моим ожиданиям, «store.requestAccess» не только запрашивает, но и SETS.

В результате, когда пользователь ОТМЕНАЕТ диалоговое окно, переключатель переключается обратно (ожидаемый), но любая последовательная попытка переключить переключатель в положение ВКЛЮЧЕНА считается положением ВЫКЛ, без нового диалога.

Что мне делать?

1 Ответ

0 голосов
/ 10 ноября 2018

Запрос на конфиденциальность запрашивается только один раз. Если вы обнаружите, что в данный момент ему отказано, вы можете либо обновить пользовательский интерфейс, либо предложить пользователю перейти в «Настройки» и включить его. Вы можете использовать UIApplication openSettingsURLString и UIApplication openURL, чтобы перевести пользователя на страницу настроек вашего приложения в приложении "Настройки".

...