Как программно завершить работу приложения в iOS 12

У меня проблема, я поставил свой iPhone 6 на iOS 12 beta 1, поэтому в моем приложении метод закрытия при нажатии на всплывающую кнопку не работает на iOS 12, но работает на iOS 11.4.1

Это метод, который я использовал:

UIControl().sendAction(#selector(URLSessionTask.suspend), to: UIApplication.shared, for: nil)

В iOS 11 приложение завершается правильно, в iOS 12 приложение не выходит, просто ничего не делает при нажатии на всплывающую кнопку.

Я знаю, что это Swift 4.2, и когда я просматривал новости и обновления, я не видел что-то вроде ссылки с новым методом для правильного закрытия приложения.

Мне это нужно, потому что я использую это, чтобы закрыть приложение, если человек не принимает Условия использования.

Вы можете вызвать в exit, если я правильно помню

Paulw11 11.06.2018 15:44
exit() должен работать, но не рекомендуется. Просто оставьте человека на экране приветствия / входа в систему, если он не принимает условия.
diegotrevisan 11.06.2018 15:52

exit не реагирует, потому что при выходе возникает сбой

Louis Legout 11.06.2018 16:03

Технически завершение работы приложения - это сбой, независимо от того, как вы его выполняете, и, скорее всего, это приведет к тому, что ваше приложение будет отклонено Apple.

vacawama 11.06.2018 16:04

evene exit () используется в Obj-C, а не в Swift ... Я потерялся, мне нужно, потому что если приложение не закрывается, когда кто-то пытается обойти условия ... Это сложно, я получаю данные люди, которые принимают и не соглашаются с положениями и условиями, если кто-то работает, чтобы обойти, я не смогу проверить это из этого выхода.

Louis Legout 11.06.2018 16:11

@LouisLegout Что ж, вам придется очистить эти данные, если пользователь отклоняет условия.

diegotrevisan 11.06.2018 21:15

Вам не разрешено вызывать exit (). Это запрещено в документе Apple HIG. Что делать, если ваш пользователь не принимает эту опцию? Не волнуйтесь, вам также не разрешено отображать экран лицензии при запуске. Такая ситуация никогда не возникнет в принятом приложении.

Shayne 06.06.2019 08:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
12
7
17 277
2

Ответы 2

Вы можете вызвать метод выход

exit(-1)

или вы можете использовать NSXPCConnection.suspend

UIControl().sendAction(#selector(NSXPCConnection.suspend),
                       to: UIApplication.shared, for: nil)

Кроме того, Apple не рекомендует принудительно прекращать работу вашего приложения. Неважно, как вы это делаете.

Проверьте сообщение это.

не работает UIControl: '(на iOS12 внесено много изменений

Louis Legout 11.06.2018 16:03

exit не работает, и даже он будет работать, я никогда не буду его использовать, а UIControl не работает :(

Louis Legout 11.06.2018 16:04

@LouisLegout, можете ли вы добавить свойство 'UIApplicationExitsOnSuspend' к 'true' в свой список и повторить попытку? Если он все еще не работает, это проблема iOS 12, и мы со временем узнаем об этом.

U. Benlice 11.06.2018 16:09

Вместо выхода из приложения попробуйте смоделировать сценарий перезапуска: stackoverflow.com/a/52278301/3359372

Mohsin Khubaib Ahmed 26.08.2020 14:58

Попробуйте этот код:

DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
    UIApplication.shared.perform(#selector(NSXPCConnection.suspend))
     DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
      exit(0)
     }
}

Это будет ждать 1 секунду, а приложение закроется через 0,5 секунды. Вы можете затемнить отображение перед этим фрагментом кода.

Кто-то загрузил приложение в appStore с этим кодом? отклонит ли Apple мое приложение за это?

aviza 07.01.2020 10:50

Вместо выхода из приложения попробуйте смоделировать сценарий перезапуска: stackoverflow.com/a/52278301/3359372

Mohsin Khubaib Ahmed 26.08.2020 14:57

Другие вопросы по теме