Я пытаюсь проверить, включены ли UserNotifications, и если нет, я хочу бросить предупреждение. Поэтому у меня есть функция checkAvailability
, которая проверяет несколько вещей, включая статус авторизации UserNotification.Подождите завершения обработчика завершения - Swift
func checkAvailabilty() -> Bool {
//
// other checking
//
var isNotificationsEnabled = false
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound], completionHandler: { (granted, error) in
if granted {
isNotificationsEnabled = true
}
else {
isNotificationsEnabled = false
}
})
}
if isNotificationsEnabled {
return true
}
else {
// Throw alert: Remind user to activate notifications
return false
}
}
Но обработчик завершения вызова называется слишком поздно. Функция уже возвращена false
, после чего выполняется код в colsure.
Я попытался поместить все заявление UNUserNotificationCenter.current().requestAuthorization()
в синхронную очередь отправки, но это не сработало.
Другим подходом было бы вернуться изнутри закрытия, но я не знаю, как это осуществить.
Добавление обработчика завершения в качестве параметра 'checkAvailabilty()' и назвать его в конец обработчика завершения requestAuthorization. – shallowThought