Começar a usar o Firebase SQL Connect no iOS

Neste guia de início rápido, você vai criar e implantar um pequeno banco de dados de amostra e acessá-lo em um app iOS.

Pré-requisitos

Para concluir este guia de início rápido, você precisará do seguinte:

  • Um ambiente com as seguintes ferramentas instaladas:
    • Uma versão recente do Xcode.
    • A CLI do Firebase. Se você tiver o NPM instalado, execute:
      npm install -g firebase-tools@latest
      Caso contrário, consulte os documentos para instruções de instalação.
  • Uma Conta do Google.

Tutorial

Tutorial

1. Criar um novo projeto do Xcode

No Xcode, crie um novo projeto com o modelo App.

Nomeie o projeto Quickstart com o identificador do pacote com.example.Quickstart.

Caixa de diálogo "Novo projeto" do Xcode

Crie o projeto em uma pasta vazia, como ~/qs-ios. O Xcode vai criar uma pasta, ~/qs-ios/Quickstart, que contém os arquivos do projeto files.

2. Inicializar um projeto do Firebase

Mude para o diretório do projeto do Xcode e inicialize um projeto do Firebase nele.

cd ~/qs-ios
firebase login --reauth
firebase init dataconnect

Quando solicitado, escolha as seguintes opções:

  • Criar um novo projeto do Firebase.
  • Não criar um esquema com o Gemini (neste tutorial, você vai usar um esquema de exemplo pré-criado ).
  • Provisionar uma instância e um banco de dados de teste sem custo financeiro Cloud SQL.

Aceite os valores padrão para todos os outros prompts.

Em seguida, registre o app iOS no seu projeto do Firebase.

firebase apps:create --bundle-id com.example.Quickstart ios ios-quickstart

Quando solicitado a especificar um ID da App Store, pressione Enter para pular a etapa.

firebase apps:sdkconfig ios -o Quickstart/GoogleService-Info.plist

No Xcode, selecione File > Add Files to "Quickstart" e selecione o GoogleService-Info.plist arquivo.

3. Analisar as definições de exemplo do GraphQL

No SQL Connect, você define todos os esquemas e operações do banco de dados usando o GraphQL. Quando você inicializou o projeto, a Firebase CLI criou algumas definições de exemplo para você começar.

dataconnect/schema/schema.gql (trecho)
type Movie @table {
  title: String!
  imageUrl: String!
  genre: String
}

type MovieMetadata @table {
  movie: Movie! @unique
  rating: Float
  releaseYear: Int
  description: String
}
dataconnect/example/queries.gql (trecho)
query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
  }
}

4. Implantar seus esquemas e operações

Sempre que você fizer mudanças nos esquemas, consultas ou mutações do banco de dados, será necessário implantá-los para que as mudanças entrem em vigor no banco de dados.

firebase deploy --only dataconnect

5. Inicializar o banco de dados com dados de amostra

Esses dados iniciais vão fornecer algo para você analisar ao testar o app de exemplo. Observe que, nesta etapa, você está executando um GraphQL arbitrário, que é permitido para tarefas administrativas.

firebase dataconnect:execute dataconnect/seed_data.gql

6. Gerar um SDK do cliente iOS

Esse comando usa as definições do GraphQL para gerar um SDK do cliente iOS especificamente para seu banco de dados. Você usa essa biblioteca no app cliente para realizar todas as operações do banco de dados.

É possível gerar bibliotecas para várias plataformas, incluindo Kotlin para Android, JavaScript para Web e Flutter, adicionando definições a connector.yaml.

firebase dataconnect:sdk:generate
SDK do iOS gerado automaticamente (trecho)
public class ListMoviesQuery {

  // ...

  @MainActor
  public func execute(
    fetchPolicy: QueryFetchPolicy = .preferCache,
  ) async throws -> OperationResult<ListMoviesQuery.Data> {
    var variables = ListMoviesQuery.Variables()

    let ref = dataConnect.query(
      name: "ListMovies", variables: variables, resultsDataType: ListMoviesQuery.Data.self,
      publisher: .observableMacro)

    let refCast = ref as! QueryRefObservation<ListMoviesQuery.Data, ListMoviesQuery.Variables>
    return try await refCast.execute(fetchPolicy: fetchPolicy)
  }
}

7. Adicionar dependências do Firebase ao seu projeto do Xcode

Adicione a biblioteca gerada ao seu projeto usando o Gerenciador de pacotes do Swift. Quando você adiciona a biblioteca gerada, ela inclui transitivamente as bibliotecas principais do Firebase e a biblioteca Firebase SQL Connect.

Na barra de navegação do Xcode, selecione File > Add Package Dependencies > Add Local e escolha a pasta que contém a biblioteca gerada, FirebaseDataConnectGenerated/DataConnectGenerated/. A pasta correta vai conter um arquivo chamado Package.swift.

8. Escrever um cliente iOS de exemplo

Substitua o conteúdo de Quickstart/QuickstartApp.swift por este app iOS simples.

Observe que o app conclui o acesso necessário ao banco de dados usando uma função do SDK gerado.

import SwiftUI
import FirebaseCore
import FirebaseDataConnect
import DataConnectGenerated

@main
struct QuickstartApp: App {
  init() {
    FirebaseApp.configure()
  }
  var body: some Scene {
    WindowGroup {
      ListMovieView()
    }
  }
}

struct ListMovieView: View {
  @State private var moviesData: ListMoviesQuery.Data?

  var body: some View {
    VStack {
      ForEach(moviesData?.movies ?? []) { movie in
        Text(movie.title)
      }
    }
    .task {
      let result = try? await DataConnect.exampleConnector
          .listMoviesQuery.execute()
      self.moviesData = result?.data
    }
  }
}

9. Instale o app

No Xcode, execute o app de exemplo para vê-lo em ação.

Próximas etapas

Testar a extensão do SQL Connect VS Code

Ao desenvolver com SQL Connect, recomendamos o uso da extensão do SQL Connect VS Code. Mesmo que você não use o Visual Studio Code como ambiente de desenvolvimento principal, a extensão oferece vários recursos que tornam o desenvolvimento de esquemas e operações mais conveniente:

  • Um servidor de linguagem GraphQL, que oferece verificação de sintaxe e sugestões de preenchimento automático específicas do SQL Connect
  • Botões do CodeLens em linha com o código que permitem ler e gravar dados dos arquivos de definição de esquema e executar consultas e mutações das definições de operação.
  • Mantenha automaticamente os SDKs gerados sincronizados com as definições do GraphQL.
  • Configuração simplificada do emulador local.
  • Implantação simplificada na produção.

Usar o SQL Connect emulador para desenvolvimento local

Embora este tutorial tenha mostrado como implantar SQL Connect esquemas e operações diretamente na produção, provavelmente você não vai querer fazer mudanças no banco de dados de produção enquanto estiver desenvolvendo o app. Em vez disso, configure o SQL Connect emulador e faça o trabalho de desenvolvimento nele em vez da produção. O emulador configura uma instância local do PGlite que se comporta de maneira semelhante a uma instância ativa do PostgreSQL no Cloud SQL.

Aprenda a escrever esquemas e operações para seu app

Ao desenvolver apps com SQL Connect, o design dos esquemas e operações é uma das primeiras e mais importantes tarefas de desenvolvimento que você vai concluir.

Aprenda a receber atualizações em tempo real do SQL Connect

Você pode usar SQL Connect para escrever aplicativos cliente que reagem a mudanças de dados em tempo real. Consulte Receber atualizações em tempo real de SQL Connect.