Primeros pasos con Firebase SQL Connect en iOS

En esta guía de inicio rápido, crearás e implementarás una pequeña base de datos de muestra y accederás a ella desde una app para iOS.

Requisitos previos

Para completar esta guía de inicio rápido, necesitarás lo siguiente:

  • Un entorno con las siguientes herramientas instaladas:
    • La versión más reciente de Xcode.
    • Firebase CLI Si tienes instalado NPM, ejecuta lo siguiente:
      npm install -g firebase-tools@latest
      De lo contrario, consulta la documentación para obtener instrucciones de instalación.
  • Una Cuenta de Google

Instructivo

Instructivo

1. Crear un proyecto de Xcode nuevo

En Xcode, crea un proyecto nuevo con la plantilla App.

Nombra el proyecto Quickstart con el identificador de paquete com.example.Quickstart.

Cuadro de diálogo de proyecto nuevo de Xcode

Crea el proyecto en una carpeta vacía, como ~/qs-ios. Xcode creará una carpeta, ~/qs-ios/Quickstart, que contiene los archivos de tu proyecto.

2. Inicializa un proyecto de Firebase

Cambia al directorio del proyecto de tu proyecto de Xcode y, luego, inicializa un proyecto de Firebase en él.

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

Cuando se te solicite, elige las siguientes opciones:

  • Crea un proyecto de Firebase nuevo.
  • No crees un esquema con Gemini (en este instructivo, usarás un esquema de ejemplo precompilado ).
  • Aprovisiona una instancia y una base de datos de prueba gratuita Cloud SQL.

Acepta los valores predeterminados para todas las demás solicitudes.

Luego, registra la app para iOS en tu proyecto de Firebase.

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

Cuando se te solicite que especifiques un ID de App Store, presiona Intro para omitir el paso.

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

En Xcode, selecciona File > Add Files to "Quickstart" y selecciona el GoogleService-Info.plist archivo.

3. Revisa las definiciones de GraphQL de ejemplo

En SQL Connect, defines todos los esquemas y las operaciones de tu base de datos con GraphQL. Cuando inicializaste tu proyecto, la Firebase CLI creó algunas definiciones de ejemplo para que comiences.

dataconnect/schema/schema.gql (extracto)
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 (extracto)
query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
  }
}

4. Implementa tus esquemas y operaciones

Cada vez que realices cambios en los esquemas, las consultas o las mutaciones de tu base de datos, debes implementarlos para que los cambios surtan efecto en la base de datos.

firebase deploy --only dataconnect

5. Propaga la base de datos con datos de muestra

Estos datos de origen te darán algo para ver cuando pruebes la app de ejemplo. Ten en cuenta que, en este paso, ejecutas GraphQL arbitrario, lo que se permite para las tareas administrativas.

firebase dataconnect:execute dataconnect/seed_data.gql

6. Genera un SDK de cliente de iOS

Este comando usa tus definiciones de GraphQL para generar un SDK de cliente de iOS específicamente para tu base de datos. Usas esta biblioteca en tu app cliente para realizar todas las operaciones de la base de datos.

Puedes generar bibliotecas para varias plataformas, incluidas Kotlin para Android, JavaScript para la Web y Flutter, agregando definiciones a connector.yaml.

firebase dataconnect:sdk:generate
SDK de iOS generado automáticamente (extracto)
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. Agrega dependencias de Firebase a tu proyecto de Xcode

Agrega la biblioteca generada a tu proyecto con Swift Package Manager. Cuando agregues la biblioteca generada, se incluirán de forma transitiva las bibliotecas principales de Firebase y la biblioteca Firebase SQL Connect.

En la barra de navegación de Xcode, selecciona File > Add Package Dependencies > Add Local y elige la carpeta que contiene la biblioteca generada, FirebaseDataConnectGenerated/DataConnectGenerated/. La carpeta correcta contendrá un archivo llamado Package.swift.

8. Escribe un cliente de iOS de muestra

Reemplaza el contenido de Quickstart/QuickstartApp.swift por esta app simple para iOS.

Observa que la app completa el acceso necesario a la base de datos con una función de el SDK generado.

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. Probar la aplicación

Desde Xcode, ejecuta la app de ejemplo para verla en acción.

Próximos pasos

Prueba la extensión de SQL Connect para VS Code

Cuando desarrolles con SQL Connect, te recomendamos usar la extensión de SQL Connect para VS Code. Incluso si no usas Visual Studio Code como tu entorno de desarrollo principal, la extensión proporciona varias funciones que hacen que el desarrollo de esquemas y operaciones sea más conveniente:

  • Un servidor de lenguaje GraphQL que proporciona verificación de sintaxis y sugerencias de autocompletar específicas a SQL Connect
  • Botones de CodeLens en línea con tu código que te permiten leer y escribir datos desde tus archivos de definición de esquema y ejecutar consultas y mutaciones desde tus definiciones de operación
  • Mantén automáticamente tus SDK generados sincronizados con tus definiciones de GraphQL.
  • Configuración simplificada del emulador local
  • Implementación simplificada en producción

Usa el SQL Connect emulador para el desarrollo local

Si bien en este instructivo se mostró cómo implementar SQL Connect esquemas y operaciones directamente en producción, es probable que no quieras realizar cambios en tu base de datos de producción mientras desarrollas tu app de forma activa. En su lugar, configura el SQL Connect emulador y realiza tu trabajo de desarrollo en él en lugar de en la producción. El emulador configura una instancia local de PGlite que se comporta de manera similar a una instancia activa de PostgreSQL en Cloud SQL.

Aprende a escribir esquemas y operaciones para tu app

Cuando desarrolles apps con SQL Connect, el diseño de tus esquemas y operaciones es una de las primeras y más importantes tareas de desarrollo que completarás.

  • Gemini en la consola Firebase es una herramienta de IA que puede generar esquemas SQL Connect a partir de una descripción en lenguaje natural de tu app. Esta herramienta puede ayudarte a comenzar muy rápido, en especial si nunca trabajaste con bases de datos relacionales.
  • Como alternativa, puedes escribir esquemas, consultas y mutaciones de bases de datos directamente con GraphQL. Comienza con la guía en Diseño de esquemas, y, luego, continúa con las páginas de seguimiento para aprender a escribir operaciones.SQL Connect

Aprende a obtener actualizaciones en tiempo real de SQL Connect

Puedes usar SQL Connect para escribir aplicaciones cliente que reaccionen a los datos cambiantes en tiempo real. Consulta Obtén actualizaciones en tiempo real de SQL Connect.