Erste Schritte mit Firebase SQL Connect unter iOS

In dieser Kurzanleitung erstellen und stellen Sie eine kleine Beispieldatenbank bereit und greifen von einer iOS-App aus darauf zu.

Vorbereitung

Für diese Kurzanleitung ist Folgendes erforderlich:

  • Eine Umgebung mit den folgenden installierten Tools:
    • Eine aktuelle Version von Xcode.
    • Die Firebase CLI. Wenn Sie NPM installiert haben, führen Sie Folgendes aus:
      npm install -g firebase-tools@latest
      Andernfalls finden Sie in der Dokumentation eine Installationsanleitung.
  • Ein Google-Konto.

Anleitung

Anleitung

1. Neues Xcode-Projekt erstellen

Erstellen Sie in Xcode ein neues Projekt mit der Vorlage App.

Geben Sie dem Projekt den Namen Quickstart mit dem Paket-Identifikator com.example.Quickstart.

Dialogfeld „Neues Projekt“ in Xcode

Erstellen Sie das Projekt in einem leeren Ordner wie ~/qs-ios. Xcode erstellt einen Ordner ~/qs-ios/Quickstart, der Ihre Projektdateien enthält.

2. Firebase-Projekt initialisieren

Wechseln Sie zum Projektverzeichnis Ihres Xcode-Projekts und initialisieren Sie darin ein Firebase Projekt.

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

Wählen Sie bei Aufforderung die folgenden Optionen aus:

  • Neues Firebase-Projekt erstellen.
  • Kein Schema mit Gemini erstellen (in dieser Kurzanleitung verwenden Sie ein vorgefertigtes Beispielschema).
  • Cloud SQL Instanz und Datenbank für den kostenlosen Testzeitraum bereitstellen.

Übernehmen Sie für alle anderen Eingabeaufforderungen die Standardwerte.

Registrieren Sie als Nächstes die iOS-App in Ihrem Firebase-Projekt.

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

Wenn Sie aufgefordert werden, eine App Store-ID anzugeben, drücken Sie die Eingabetaste, um diesen Schritt zu überspringen.

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

Wählen Sie in Xcode File > Add Files to "Quickstart" (Datei > Dateien zu „Quickstart“ hinzufügen) aus und wählen Sie die GoogleService-Info.plist Datei aus.

3. Beispiel-GraphQL-Definitionen ansehen

In SQL Connect definieren Sie alle Datenbankschemas und -vorgänge mit GraphQL. Als Sie Ihr Projekt initialisiert haben, hat die Firebase CLI einige Beispieldefinitionen erstellt, damit Sie loslegen können.

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

4. Schemas und Vorgänge bereitstellen

Wenn Sie Änderungen an Ihren Datenbankschemas, Abfragen oder Mutationen vornehmen, müssen Sie sie bereitstellen, damit die Änderungen in der Datenbank wirksam werden.

firebase deploy --only dataconnect

5. Datenbank mit Beispieldaten füllen

Mit diesen Beispieldaten können Sie die Beispiel-App testen. Beachten Sie, dass Sie in diesem Schritt beliebige GraphQL-Abfragen ausführen, was für Verwaltungsaufgaben zulässig ist.

firebase dataconnect:execute dataconnect/seed_data.gql

6. iOS-Client-SDK generieren

Mit diesem Befehl werden Ihre GraphQL-Definitionen verwendet, um ein iOS-Client-SDK speziell für Ihre Datenbank zu generieren. Sie verwenden diese Bibliothek in Ihrer Client-App, um alle Datenbankvorgänge auszuführen.

Sie können Bibliotheken für mehrere Plattformen generieren, darunter Kotlin für Android, JavaScript für das Web und Flutter, indem Sie Definitionen zu connector.yaml hinzufügen.

firebase dataconnect:sdk:generate
Automatisch generiertes iOS-SDK (Auszug)
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. Firebase-Abhängigkeiten zum Xcode-Projekt hinzufügen

Fügen Sie die generierte Bibliothek mit Swift Package Manager zu Ihrem Projekt hinzu. Wenn Sie die generierte Bibliothek hinzufügen, werden transitiv die Firebase-Kernbibliotheken und die Firebase SQL Connect Bibliothek einbezogen.

Wählen Sie in der Xcode-Navigationsleiste File > Add Package Dependencies > Add Local aus und wählen Sie den Ordner mit der generierten Bibliothek aus: FirebaseDataConnectGenerated/DataConnectGenerated/. Der richtige Ordner enthält eine Datei mit dem Namen Package.swift.

8. Beispiel-iOS-Client schreiben

Ersetzen Sie den Inhalt von Quickstart/QuickstartApp.swift durch diese einfache iOS-App.

Beachten Sie, dass die App den erforderlichen Datenbankzugriff mit einer Funktion aus dem generierten SDK ausführt.

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. App testen

Führen Sie die Beispiel-App in Xcode aus, um sie in Aktion zu sehen.

Nächste Schritte

SQL Connect VS Code-Erweiterung ausprobieren

Bei der Entwicklung mit SQL Connect empfehlen wir dringend, die SQL Connect VS Code-Erweiterung zu verwenden. Auch wenn Sie Visual Studio Code nicht als primäre Entwicklungsumgebung verwenden, bietet die Erweiterung mehrere Funktionen, die die Entwicklung von Schemas und Vorgängen erleichtern:

  • Ein GraphQL-Sprachserver mit Syntaxprüfung und Vorschlägen zur automatischen Vervollständigung speziell für SQL Connect
  • CodeLens-Schaltflächen in Ihrem Code, mit denen Sie Daten aus Ihren Schema definitionsdateien lesen und schreiben sowie Abfragen und Mutationen aus Ihren Vorgangsdefinitionen ausführen können.
  • Automatische Synchronisierung der generierten SDKs mit Ihren GraphQL-Definitionen.
  • Vereinfachte Einrichtung des lokalen Emulators.
  • Vereinfachte Bereitstellung in der Produktion.

Verwenden Sie den SQL Connect Emulator für die lokale Entwicklung

In dieser Kurzanleitung haben Sie gelernt, wie Sie SQL Connect Schemas und Vorgänge direkt in der Produktion bereitstellen. Wahrscheinlich möchten Sie aber keine Änderungen an Ihrer Produktionsdatenbank vornehmen, während Sie Ihre App aktiv entwickeln. Richten Sie stattdessen den SQL Connect Emulator ein und führen Sie Ihre Entwicklungsarbeit damit aus. Der Emulator richtet eine lokale PGlite-Instanz ein, die sich ähnlich wie eine aktive PostgreSQL Instanz in Cloud SQL verhält.

Informationen zum Schreiben von Schemas und Vorgängen für Ihre App

Bei der Entwicklung von Apps mit SQL Connect ist das Design Ihrer Schemas und Vorgänge eine der ersten und wichtigsten Entwicklungsaufgaben, die Sie ausführen.

  • Gemini in der Firebase Konsole ist ein KI-Tool , mit dem SQL Connect Schemas aus einer Beschreibung Ihrer App in natürlicher Sprache generiert werden können. Mit diesem Tool können Sie sehr schnell loslegen, insbesondere wenn Sie noch nie mit relationalen Datenbanken gearbeitet haben.
  • Alternativ können Sie Datenbankschemas, Abfragen und Mutationen direkt mit GraphQL schreiben. Beginnen Sie mit der Anleitung unter Schemas SQL Connectentwerfen, und lesen Sie dann die folgenden Seiten, um zu erfahren, wie Sie Vorgänge schreiben.

Informationen zum Abrufen von Echtzeitupdates von SQL Connect

Mit SQL Connect können Sie Clientanwendungen schreiben, die in Echtzeit auf sich ändernde Daten reagieren. Weitere Informationen finden Sie unter Echtzeitupdates von SQL Connect abrufen.