Я пытаюсь выпустить обновление для своего приложения, но заметил, что при первом запуске приложения появляется новое всплывающее окно с согласием (прикрепленное изображение), которое запрашивает доступ к сети через Wi-Fi или сотовые данные.
>

Ну, моя проблема в том, что это всплывающее окно предотвращает появление запроса ATT! , после того, как я нажму «Разрешить», приложение продолжит открываться, не показывая всплывающее окно ATT.
Всплывающее окно ATT появляется во второй раз, когда я запускаю приложение, поскольку я уже дал свое согласие на использование сети.
Можно ли отслеживать всплывающее окно согласия сети, когда пользователь дает свое согласие? чтобы после этого я мог показать всплывающее окно ATT!
Вот код заставки:
struct w_splash: Просмотр { пусть allTasksGroup = DispatchGroup() @State var canCall:Bool = false @State var opacityAnim:CGFloat = 1 @State varanimationView:LottieAnimationView = LottieAnimationView() @State var active_window:main_windows! { DidSet { allTasksGroup.leave() } } @State var lottiePlayed:Bool = false var body: some View { ZStack{ Цвет (шестнадцатеричный: «#641C9E») .ignoresSafeArea() VStack{ Изображение("логотип") .изменяемый размер() .aspectRatio(contentMode: .fit) .frame(ширина: UIScreen.main.bounds.width * 0,7) ActivityIndicator(isAnimating: .constant(true), стиль: UIActivityIndicatorView.Style.large) .padding(.top, 20) } .padding(.bottom, UIScreen.main.bounds.height * 0,2) .onAppear(){ DispatchQueue.main.asyncAfter(deadline: .now() + 1, выполните: { allTasksGroup.leave() }) } VStack{ Разделитель() VStack{ Изображение («логотип Suqare») .изменяемый размер() .aspectRatio(contentMode: .fit) .frame(высота: UIScreen.main.bounds.width * 0,25) }.padding(.bottom, 50) Изображение("поNumbase") .изменяемый размер() .aspectRatio(contentMode: .fit) .frame(ширина: UIScreen.main.bounds.width * 0,4) } } .onAppear(){ //Группа Лотти allTasksGroup.enter() //Регистрация или настройки allTasksGroup.enter() //извлекаем задачу fetchProducts { DispatchQueue.main.async { self.checkAndOpen() } } allTasksGroup.notify(queue: .main) { можетВызов = правда } } .onChange(of: canCall, выполните: { (_) в DispatchQueue.main.async { если self.active_window != ноль { Env.shared.active_window = self.active_window } } }) } fileprivate func checkAndOpen(){ DispatchQueue.main.asyncAfter(deadline: .now() + 1, выполните: { //АТТ-запрос ATTrackingManager.requestTrackingAuthorization(completionHandler: {статус в DispatchQueue.main.async { //Регистрируемся для push-уведомлений APP.shared.delegate.registerForPushNotification{ check_maintenance { //если мы вошли в систему, пользователь! если !Env.shared.auth_token.isEmpty { DispatchQueue.main.asyncAfter(deadline: .now() + 0,5) { Env.shared.api_checkin(forceRetry: правда ){ успех в если успех { DispatchQueue.main.async { active_window = .landing } }еще{ проверитьИОткрыть() } } } }еще{ DispatchQueue.main.asyncAfter(deadline: .now() + 0,5) { Env.shared.api_settings(forceRetry: true) {успех в если успех { DispatchQueue.main.async { //Пропущено! if UserDefaults.standard.bool(forKey: "skiped_subscribe") == true { active_window = .landing }еще{ active_window = .tutorial } } } } } }//если }//check_maintenance }//Конец push-уведомления }//Очередь блюд })//Конец ATT }) }