Возможно ли завершить приложение кодом?


#1

Собственно впорос в теме. Логика подсказывает, что вряд ли бы Эппл одобрила такой подход к UX, но мало ли ))) Естественно, намеренный рантайм не считается, хочется управляемого поведения: например алерт, что надо что-то в настройках изменить и перезапустить, чтобы юзер не думал о выгрузке из памяти приложения…


#2

В любом месте вызвать fatalError() и преложение вылетит, считай завершится. Обратно запустить нельзя. Эппл не одобрит.


#3

Exit() какой-нидь вызывать.


#4

Я же просил без рантайма: зачем мне все эти ошибки в статистике? Я так не отличу фейк от настоящих :slight_smile:

Вопрос то непраздный: например, я зпрашиваю нативную аутентификацию при помощи биометрии или кода на входе в приложение. Там у стандартного метода запроса отпечатка, например, есть подкапотная кнопка Cancel, и она выдаёт error отмены юзером аутентификации, который мы ловим. Что юзеру то делать дальше? Он не может зайти в приложение, например, потому что это не его телефон, мы получаем ошибку аутентификации и оставляем юзера созерцать вьюху входа :slight_smile: А надо завершить приложение с инфо алертом, например.


#5

Что это значит? ______


#6

Смотреть на заставку)

Exit тоже нельзя.


#7

знаю вот такое

exit(0)
      let noBtn = UIAlertAction(title:"Cancel" , style: .destructive, handler: {(_ action: UIAlertAction) -> Void in
      exit(0)
    })

но приложение будет закрыто. по поводу перезапуска не уверен


#8

exit(0) почему нельзя?


#9

#10

по поводу реджекта от Эпла подтверждаю. с моим кодом выше было такое.


#11

получается, что метод есть, но им пользоваться нельзя :slight_smile: Ну ок, пусть юзер смотрит логинВью )))

Тогда второй вопрос, который я пока не нагуглил:
Как при выходе из фона показать нужный контроллер с логином?

Update - нагугл тут на форуме, буду продовать ))) Всем спасибо :slight_smile:


#12

Этот метод из сишной std, из консольных программ выходить.


#13

Странно конечно. Видишь алерт, в котором говориться что приложение щас закроется. Приложение закрывается и юзер думает что это креш. :thinking:
А как быть с переключением языков “на лету” ? Один из вариантов как раз предусматривает перезагрузку, чтобы каши не было из старых и новых экранов.

В этом случае придется все экраны выгружать и создавать все с нуля. (хотя щас это технически не проблема) :thinking:


#14

Такой Алерт не увидишь :slight_smile:

Если нужно на лету, то NSLocalizedString не подходит и нужно использовать что то другое.


#15

Почему? Exit выполняетс в action-е. Пока не нажмешь на кнопку будешь в приложении сидеть.


#16

This is not in compliance with the iOS Human Interface Guidelines, as required by the App Store Review Guidelines.


#18

Для переключения языка на лету можно просто переинициализировать rootViewController.
Но по феншую, это лучше всего делать через нотификации.


#19

так, ребята, я что-то запутался на ровном месте:
как в appDelegate прописать переход на нужный vc при выходе из фона? У меня почему-то через instantiateViewController не получается… Или надо по-другому?


#20

Ух блин, разобрался! Спасибо за помощь :rofl: