Я пытаюсь получить предупреждение «Перейти к настройкам», если пользователь отказывает в доступе к календарю. Он работает, как только пользователь отклонил календарь и снова откроет приложение. Но мне нужно, чтобы предупреждение появилось сразу после того, как пользователь отказал в доступе.Показывать предупреждение, если доступ к календарю запрещен Swift 3
Вот мой календарь код доступа:
/**
*/
func requestDeniedAlert() -> UIAlertController {
let requestAlertController = UIAlertController(title: "Calendar Access Denied", message: "Please Allow Calendar Access In Settings", preferredStyle: .alert)
let settingsAction = UIAlertAction(title: "Go To Settings", style: .default){(action) in
print("The User Will Be Taken To the Settings")
let goToSettings = URL(string: UIApplicationOpenSettingsURLString)
UIApplication.shared.open(goToSettings!)
}
requestAlertController.addAction(settingsAction)
return requestAlertController
}
/**
reuestCalendarPermissions:
@param
@return
*/
func requestCalendarPermissions() {
eventInstance.requestAccess(to: .event, completion: {(accessGranted: Bool, error: Error?) in
if accessGranted == true {
print("Access Has Been Granted")
MainScreenTableView.flagVariable.statusFlag = true
}
else {
print("Change Settings to Allow Access")
MainScreenTableView.flagVariable.statusFlag = false
}
})
}
/**
checkStatus:
Notes: This function checks if the User has given calendar access to app
If access is restricted or denied, a "Go To Settings" view will appear
*/
func checkStatus() {
let currentStatus = EKEventStore.authorizationStatus(for: EKEntityType.event)
if currentStatus == EKAuthorizationStatus.notDetermined {
requestCalendarPermissions()
}
else if currentStatus == EKAuthorizationStatus.authorized {
print("Access Has Been Granted")
MainScreenTableView.flagVariable.statusFlag = true
}
else if (currentStatus == EKAuthorizationStatus.denied) || (currentStatus == EKAuthorizationStatus.restricted){
print("Access Has Been Denied")
MainScreenTableView.flagVariable.statusFlag = false
}
}
Я работаю с UITableViewController, который, казалось бы, что делает эту такую боль. То, как у меня есть это сейчас, я устанавливаю флаг, а затем в tableview я представляю предупреждение. Но я не могу заставить предупреждение всплывать сразу после того, как пользователь отказывает в доступе.
Спасибо за помощь!
Зачем вам показывать предупреждение сразу же после отказа пользователя? Пользователь уже знает, что доступ запрещен, поскольку он просто отрицал это. – rmaddy
Ну, приложение не будет использоваться, если оно не имеет доступа к календарям. Поэтому, если они отказывают в доступе, я хочу всплывать, что позволяет им перейти к настройкам и предоставить доступ к календарям. Как будто некоторые приложения не позволят вам ничего делать, если вы не предоставите им доступ к службам определения местоположения. – rutheferd
Ну, ваше приложение может быть отклонено, если приложение не будет работать, если доступ запрещен. Я считаю, что я где-то читал, что приложение должно работать, даже если некоторые из его функций не могут быть активированы из-за настроек пользователя. – Adamsor