Criando app iOS

Como mencionado anteriormente, é requisito ter o XCode para criar uma nova aplicação para dispositivos da Apple. Falaremos sobre Hotwire Native para Android em um outro livro.

A versão do XCode utilizada neste livro é a 16.1 e versão 1.1.0 do Hotwire Native.

Novo projeto XCode

Abra o XCode para visualizar uma tela semelhante a esta:

Screenshot 2024-12-21 at 19.46.49.png

Clique em Create New Project.

Screenshot 2024-12-21 at 19.48.56.png

Na sessão Application deixe selecionado a opção App clique em Next.

Screenshot 2024-12-21 at 19.51.31.png

Na nova tela, observe os pontos específicos destacados.

  1. Nome do projeto.
  2. Team (pode deixar None).
  3. Organization Identifier pode manter: com.example.
  4. Interface: Storyboard
  5. Language: Swift
  6. Testing Library: None.
  7. Storage: None.

Por fim, indique o local para a criação da pasta do projeto e clique em Create.

Screenshot 2024-12-21 at 19.57.24.png

Esta é a tela inicial exibida após a criação do projeto. Embora inicialment​e pareça complexa, a plataforma XCode oferece inúmeras soluções úteis para desenvolvedores.

Emulador

Configure ao menos um emulador para testar o aplicativo e garantir seu funcionamento adequado.

Screenshot 2024-12-21 at 20.02.58 copy.png

  1. Na parte superior podemos clicar para ver os emuladores disponíveis.
  2. Selecione o emulador que você utilizará para executar o projeto, no meu caso escolhi o iPhone 16.
  3. Clique no botão Play para ver a aplicação sendo executada.

Screenshot 2024-12-21 at 20.12.57 copy.png

No início, o emulador não exibirá nada, mas isso será resolvido em breve.

Principais arquivos e primeiras alterações

Na árvore do projeto, os principais arquivos iniciais são AppDelegate e SceneDelegate. O arquivo ViewController pode ser ignorado por enquanto.

LEMBRE-SE DE INICIAR SUA APLICACAO RAILS!

Execute na pasta do seu projeto Rails.

 bin/dev 

Primeira alteração no SceneDelegate

No arquivo SceneDelegate, faça os ajustes para que ele tenha o seguinte formato:

// Diferente do Rails, é preciso importar as libs.
import HotwireNative
import UIKit

// Rota padrão da nossa aplicação Ruby on Rails
let rootURL = URL(string: "http://localhost:3000")!

class SceneDelegate: UIResponder, UIWindowSceneDelegate { 

  var window: UIWindow?

  // Precisamos instanciar um novo Navigator
  private let navigator = Navigator()

  func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    // Sobrescreve o rootViewController da window pelo da navigator
    window?.rootViewController = navigator.rootViewController        
    // A aplicação está configurada para usar a rota padrão do Rails.
    navigator.route(rootURL)    
  }
}

Ao salvar o arquivo, o erro No such module HotwireNative será exibido na linha 1. Isso ocorre porque o Hotwire Native ainda não foi importado. Realize a importação agora seguindo estes passos...

Adicionando o Hotwire Native ao projeto

Siga a sequência abaixo para adicionar uma nova dependência ao projeto:

Menu: File >> Add Package Dependencies...

Uma tela semelhante a esta será exibida:

Screenshot 2024-12-21 at 20.45.09.png

Copie o endereço do repositório Hotwire Native iOS no GitHub:

https://github.com/hotwired/hotwire-native-ios

Cole o endereço no campo de busca da tela de dependências, selecione o Hotwire Native iOS, clique em Add Package e aguarde a conclusão da adição.

Screenshot 2024-12-21 at 20.46.41.png

Concluído o processo, o erro no arquivo SceneDelegate deverá desaparecer. Execute o projeto clicando em play ou utilizando o atalho Command + R.

Resultado final do capítulo

Screenshot 2024-12-21 at 20.53.13.png

A aplicação Rails está agora funcionando como um app iOS com Hotwire Native. Navegue para observar seu comportamento.