Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Fechar app

Bom dia. Parei de acompanhar o curso de forma mais assídua devido ao fato de eu estar usando xCode e Swift 4.2. Mas minha dúvida creio que seja básica. Preciso fazer um botão para fechar o app. O problema é que estou usando Exit(0) ou Exit(1), sei que não é a forma mais adequada. O pior de tudo é que quando volto para o app, antes de exibir o Splash screen, exibe a tela que eu estava, coisa de menos de um segundo, mas fica feio. Não sei se tem a ver com o Life cycle. Ou com algo que eu deva fazer no appDelegate

4 respostas

Oi Ronney, tudo bem?

Para que você precisa de um botão para o usuário sair do app?

Digo isso porque essa prática não está em conformidade com as diretrizes de human interface guidelines da apple... e seu app pode ser rejeitado quando for submetido a revisão para apple store.

Normalmente o usuário escolhe fechar o app quando acessa o botão home do device.

Abs.

Bom dia Ândriu Felipe Coelho. Sua resposta está certíssima, ví isso em várias matérias, seguem minhas necessidades: 1 - o app é de uso interno do cliente e não será publicada. 2 - o uso do botão Home, não está fechando o app, ou seja, ao retornar volto para a tela que estava e não para a tela de login. 3 - foi pedido que um mesmo dispositivo seja utilizado por mais de uma pessoa, ou seja, tenho que fazer as opções de e . Co relação a não ter o recurso de fechar, o cliente só aceita remover esse recurso do app, caso eu mostre uma documentação da Apple, o que eu não achei. Sugestões serão bem vindas

solução

Ahh entendi. O usuário consegue fechar o app clicando 2x no botão home e arrastando ele para cima.

Pelo que eu entendi, você precisa chamar a tela de login para o usuário se autenticar, toda vez que o app voltar de background, não é?

Se for isso, você consegue utilizar os métodos da classe AppDelegate que trata justamente isso, os estados do app, e aí você conseguiria chamar o login por exemplo, toda vez que o app ficasse ativo.

Abs.

Exato O que eu fiz foi:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {        
        self.splashScreen()

        return true
    }
    private func splashScreen() {
        let launchScreenVC = UIStoryboard.init(name: "LaunchScreen", bundle: nil)
        let rootVC = launchScreenVC.instantiateViewController(withIdentifier: "splashController")

        self.window?.rootViewController = rootVC
        self.window?.makeKeyAndVisible()
        Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(dismissSplashController), userInfo: nil, repeats: false)
    }

    @objc func dismissSplashController() {
        let mainVC = UIStoryboard.init(name: "Main", bundle: nil)
        let rootVC = mainVC.instantiateViewController(withIdentifier: "loginController")
        self.window?.rootViewController = rootVC
        self.window?.makeKeyAndVisible()
    }