SwiftUI не обновляется при изменении переменной в appDelegateIOS

Программируем под IOS
Ответить
Anonymous
 SwiftUI не обновляется при изменении переменной в appDelegate

Сообщение Anonymous »

Я пытаюсь заставить приложение проверить, доступен ли доступ к уведомлениям, а затем отобразить ContentView, если да, или NotificationView, если нет. То, что у меня есть, отлично справляется с этой задачей: при запуске оно проверяет и показывает правильное представление. Но NotificationView просит пользователя предоставить разрешения с помощью кнопки. Я хочу, чтобы, как только разрешение было предоставлено, оно переключалось на другой вид, но я не могу понять, как это сделать. Я также пытался сделать это с помощью листа, но та же проблема.
Вот что у меня есть:
appApp.swift

Код: Выделить всё

@main
struct appApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
@State private var notificationStatus: String = "na"

var body: some Scene {
WindowGroup {
if appDelegate.notificationStatus == true {
NotificationView()
} else {
ContentView()
}
}
}
}
appDelegate.swift

Код: Выделить всё

class AppDelegate: NSObject, UIApplicationDelegate, UNUserNotificationCenterDelegate {
@Published var notificationStatus: Bool = false
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let center = UNUserNotificationCenter.current()
center.getNotificationSettings { settings in
switch settings.authorizationStatus {
case .notDetermined:
self.notificationStatus = false
case .denied:
self.notificationStatus = false
case .authorized:
self.notificationStatus = true
case .provisional:
self.notificationStatus = true
case .ephemeral:
self.notificationStatus = false
@unknown default:
self.notificationStatus = false
}
}
return true
}
Будем благодарны за любую помощь, всем спасибо!

Подробнее здесь: https://stackoverflow.com/questions/786 ... ppdelegate
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»