Pierwsze kroki z Firebase SQL Connect na iOS

W tym krótkim wprowadzeniu utworzysz i wdrożysz małą przykładową bazę danych oraz uzyskasz do niej dostęp z aplikacji na iOS.

Wymagania wstępne

Aby ukończyć ten samouczek, potrzebujesz:

  • Środowisko z zainstalowanymi tymi narzędziami:
    • Najnowsza wersja Xcode.
    • wiersz poleceń Firebase; Jeśli masz zainstalowany NPM, uruchom:
      npm install -g firebase-tools@latest
      W przeciwnym razie zapoznaj się z dokumentacją, aby uzyskać instrukcje instalacji.
  • konto Google,

Samouczek

Samouczek

1. Tworzenie nowego projektu Xcode

W Xcode utwórz nowy projekt za pomocą szablonu App (Aplikacja).

Nazwij projekt Quickstart, a identyfikator pakietu ustaw na com.example.Quickstart.

Okno nowego projektu Xcode

Utwórz projekt w pustym folderze, np. ~/qs-ios. Xcode utworzy folder ~/qs-ios/Quickstart, który będzie zawierać pliki projektu.

2. Inicjowanie projektu w Firebase

Przejdź do katalogu projektu Xcode i zainicjuj w nim projekt Firebase.

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

Po wyświetleniu pytania wybierz te opcje:

  • Utwórz nowy projekt w Firebase.
  • Nie twórz schematu za pomocą Gemini (w tym samouczku użyjesz gotowego przykładowego schematu).
  • utworzyć bezpłatną instancję próbnąCloud SQL i bazę danych;

Zaakceptuj domyślne wartości dla wszystkich innych pytań.

Następnie zarejestruj aplikację na iOS w projekcie w Firebase.

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

Gdy pojawi się prośba o podanie identyfikatora sklepu z aplikacjami, naciśnij Enter, aby pominąć ten krok.

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

W Xcode wybierz File > Add Files to „Quickstart” (Plik > Dodaj pliki do „Quickstart”) i wybierz plik GoogleService-Info.plist.

3. Przejrzyj przykładowe definicje GraphQL

W SQL Connect wszystkie schematy i operacje bazy danych definiujesz za pomocą GraphQL. Podczas inicjowania projektu interfejs wiersza poleceń Firebase utworzył kilka przykładowych definicji, które pomogą Ci zacząć.

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

4. Wdrażanie schematów i operacji

Za każdym razem, gdy wprowadzasz zmiany w schematach bazy danych, zapytaniach lub mutacjach, musisz je wdrożyć, aby zmiany zostały zastosowane w bazie danych.

firebase deploy --only dataconnect

5. Wypełnianie bazy danych przykładowymi danymi

Te dane początkowe pozwolą Ci sprawdzić, jak działa przykładowa aplikacja. Pamiętaj, że na tym etapie wykonujesz dowolne zapytanie GraphQL, co jest dozwolone w przypadku zadań administracyjnych.

firebase dataconnect:execute dataconnect/seed_data.gql

6. Generowanie pakietu SDK klienta na iOS

To polecenie używa definicji GraphQL do wygenerowania pakietu SDK klienta iOS specjalnie dla Twojej bazy danych. Używasz tej biblioteki w aplikacji klienckiej do wykonywania wszystkich operacji na bazie danych.

Możesz generować biblioteki dla wielu platform, w tym Kotlin na Androida, JavaScript na potrzeby internetu i Flutter, dodając definicje do connector.yaml.

firebase dataconnect:sdk:generate
Automatycznie wygenerowany pakiet SDK na iOS (fragment)
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. Dodawanie zależności Firebase do projektu Xcode

Dodaj wygenerowaną bibliotekę do projektu za pomocą menedżera pakietów Swift. Gdy dodasz wygenerowaną bibliotekę, będzie ona przechodnio zawierać podstawowe biblioteki Firebase i bibliotekę Firebase SQL Connect.

Na pasku nawigacyjnym Xcode wybierz File > Add Package Dependencies > Add Local (Plik > Dodaj zależności pakietu > Dodaj lokalnie) i wybierz folder zawierający wygenerowaną bibliotekę FirebaseDataConnectGenerated/DataConnectGenerated/. Prawidłowy folder będzie zawierać plik o nazwie Package.swift.

8. Tworzenie przykładowego klienta iOS

Zastąp zawartość pliku Quickstart/QuickstartApp.swift tą prostą aplikacją na iOS.

Zwróć uwagę, że aplikacja uzyskuje dostęp do bazy danych za pomocą funkcji z wygenerowanego pakietu SDK.

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. Wypróbuj aplikację

Uruchom przykładową aplikację w Xcode, aby zobaczyć, jak działa.

Dalsze kroki

Wypróbuj rozszerzenie SQL Connect VS Code

Podczas tworzenia aplikacji za pomocą SQL Connect zdecydowanie zalecamy korzystanie z rozszerzenia SQL Connect VS Code. Nawet jeśli nie używasz Visual Studio Code jako głównego środowiska programistycznego, to rozszerzenie udostępnia kilka funkcji, które ułatwiają tworzenie schematów i operacji:

  • Serwer języka GraphQL, który zapewnia sprawdzanie składni i sugestie autouzupełniania specyficzne dla SQL Connect.
  • Przyciski CodeLens w linii kodu, które umożliwiają odczytywanie i zapisywanie danych z plików definicji schematu oraz wykonywanie zapytań i mutacji z definicji operacji.
  • Automatycznie synchronizuj wygenerowane pakiety SDK z definicjami GraphQL.
  • Uproszczona konfiguracja lokalnego emulatora.
  • Uproszczone wdrażanie w środowisku produkcyjnym.

Korzystanie z emulatora SQL Connect na potrzeby lokalnego programowania

W tym samouczku pokazaliśmy, jak wdrażać SQL Connectschematy i operacje bezpośrednio w środowisku produkcyjnym, ale prawdopodobnie nie będziesz chcieć wprowadzać zmian w bazie danych do użytku produkcyjnego podczas aktywnego tworzenia aplikacji. Zamiast tego skonfiguruj SQL Connectemulator i pracuj nad nim, a nie nad środowiskiem produkcyjnym. Emulator konfiguruje lokalną instancję PGlite, która działa podobnie do aktywnej instancji PostgreSQL na Cloud SQL.

Dowiedz się, jak pisać schematy i operacje dla aplikacji

Podczas tworzenia aplikacji za pomocą SQL Connect projektowanie schematów i operacji jest jednym z pierwszych i najważniejszych zadań programistycznych.

  • Gemini w Firebase konsoli to narzędzie AI, które może generować SQL Connect schematy na podstawie opisu aplikacji w języku naturalnym. SQL Connect To narzędzie może Ci pomóc w szybkim rozpoczęciu pracy, zwłaszcza jeśli nigdy wcześniej nie pracowałeś(-aś) z relacyjnymi bazami danych.
  • Możesz też pisać schematy baz danych, zapytania i mutacje bezpośrednio za pomocą GraphQL. Zacznij od wskazówek w artykule Projektowanie SQL Connect schematów, a potem przejdź do kolejnych stron, aby dowiedzieć się, jak pisać operacje.

Dowiedz się, jak otrzymywać aktualizacje w czasie rzeczywistym z SQL Connect

Możesz używać SQL Connect do pisania aplikacji klienckich, które reagują na zmieniające się dane w czasie rzeczywistym. Przeczytaj sekcję Otrzymywanie aktualizacji w czasie rzeczywistym od SQL Connect.