Oluşturulan iOS SDK'larını kullanma

Firebase Data Connect istemci SDK'ları, sunucu tarafı sorgularınızı ve mutasyonlarınızı doğrudan bir Firebase uygulamasından çağırmanıza olanak tanır. Şemaları, sorguları ve mutasyonları tasarlarken özel bir istemci SDK'sı oluşturursunuz. Bu SDK'yı Data Connect hizmetinize dağıtırsınız. Ardından, bu SDK'daki yöntemleri istemci mantığınıza entegre edersiniz.

Başka bir yerde de belirttiğimiz gibi, Data Connect sorguların ve mutasyonların istemci kodu tarafından gönderilmediğini ve sunucuda yürütülmediğini unutmamak önemlidir. Bunun yerine, dağıtıldığında Data Connect işlemleri Cloud Functions gibi sunucuda depolanır. Bu nedenle, mevcut kullanıcıların (ör. uygulamanın eski sürümlerinde) deneyimini bozmamak için ilgili istemci tarafı değişikliklerini dağıtmanız gerekir.

Bu nedenle Data Connect, sunucuya dağıtılan şemalarınızı, sorgularınızı ve mutasyonlarınızı prototip oluşturmanıza olanak tanıyan bir geliştirme ortamı ve araçlar sunar. Ayrıca, prototip oluştururken istemci tarafı SDK'larını otomatik olarak oluşturur.

Hizmetinizde ve istemci uygulamalarınızda güncellemeleri yineledikten sonra hem sunucu hem de istemci tarafı güncellemeleri dağıtılmaya hazır olur.

Müşteri geliştirme iş akışı nedir?

Başlangıç bölümünü incelediyseniz Data Connect için genel geliştirme akışıyla tanışmışsınızdır. Bu kılavuzda, şemanızdan Swift SDK'leri oluşturma ve istemci sorguları ile mutasyonlarla çalışma hakkında daha ayrıntılı bilgi edinebilirsiniz.

Özetlemek gerekirse, oluşturulan Swift SDK'larını istemci uygulamalarınızda kullanmak için aşağıdaki ön koşul adımlarını uygulamanız gerekir:

  1. Firebase'i iOS uygulamanıza ekleyin.
  2. Oluşturulan SDK'yı kullanmak için Xcode'da bağımlılık olarak yapılandırın.

    Xcode'un üst gezinme çubuğunda File > Add Package Dependencies > Add Local'ı (Dosya > Paket Bağımlılıkları Ekle > Yerel Ekle) seçin ve oluşturulan Package.swift'yi içeren klasörü belirleyin.

Ardından:

  1. Uygulama şemanızı geliştirin.
  2. SDK oluşturmayı ayarlayın:

  3. İstemci kodunuzu başlatın ve kitaplıkları içe aktarın.

  4. Sorgulara ve mutasyonlara yönelik çağrıları uygulama

  5. Data Connect emülatörünü ayarlayıp kullanın ve yineleyin.

Swift SDK'nızı oluşturma

Çoğu Firebase projesinde olduğu gibi, Firebase Data Connect istemci kodunuzla ilgili çalışmalar yerel bir proje dizininde yapılır. Hem Data Connect VS Code uzantısı hem de Firebase CLI, istemci kodu oluşturma ve yönetme için önemli yerel araçlardır.

SDK oluşturma seçenekleri, projenizi ilk kullanıma hazırladığınızda oluşturulan dataconnect.yaml dosyasındaki çeşitli girişlere göre belirlenir.

SDK oluşturmayı başlatma

connector.yaml içinde outputDir, package ve (web SDK'sı için) packageJsonDir ekleyin.
connectorId: "movies"
generate:
  swiftSdk:
    outputDir: "../movies-generated"
    package: "Movies"

outputDir, oluşturulan SDK'nın nereye çıkış yapacağını belirtir. Belirtilmezse bağlayıcı klasörü varsayılan çıkış dizini olarak kullanılır.

package, oluşturulacak paketin adını belirtir. Oluşturucu, Package.swift ve oluşturulan kodu içeren, paketin adıyla bir klasör oluşturur.

observablePublisher (isteğe bağlı), sorgu referanslarında kullanılacak Observable yayıncısını belirtir. Olası değerler observableMacro (iOS 17 ve sonraki sürümler) ve observableObject (iOS 17'den önceki sürümler) değerleridir. Belirtilmezse varsayılan değer observableMacro olur.

Prototip oluştururken SDK'ları güncelleme

Data Connect VS Code uzantısı ve Data Connect emülatörü ile etkileşimli prototip oluşturuyorsanız şemaları, sorguları ve mutasyonları tanımlayan .gql dosyalarını değiştirirken SDK kaynak dosyaları otomatik olarak oluşturulur ve güncellenir. Bu özellik, sıcak yeniden yükleme iş akışlarında yararlı olabilir.

Diğer senaryolarda, Data Connect CLI'dan Firebase emülatörünü kullanıyorsanız .gql güncellemelerini izleyebilir ve SDK kaynaklarının otomatik olarak güncellenmesini sağlayabilirsiniz.

Alternatif olarak, .gql dosyaları her değiştirildiğinde SDK'ları yeniden oluşturmak için KSA'yı kullanabilirsiniz:

firebase dataconnect:sdk:generate --watch

Entegrasyon ve üretim sürümleri için SDK'lar oluşturma

CI testlerine göndermek üzere proje kaynaklarını hazırlama gibi bazı senaryolarda, toplu güncelleme için Firebase CLI'yı çağırabilirsiniz.

Bu durumlarda firebase dataconnect:sdk:generate simgesini kullanın.

Data Connect iOS SDK'sını başlatma

Veri Bağlantısı'nı ayarlamak için kullandığınız bilgileri kullanarak Data Connect örneğinizi başlatın (tümü Firebase konsolunun Veri Bağlantısı sekmesinde bulunur).

Bağlayıcı örneği alma

Bağlayıcınızın kodu, Data Connect emülatörü tarafından oluşturulur. connector.yaml içinde belirtildiği gibi bağlayıcınızın adı movies ve paketiniz movies ise bağlayıcı nesnesini şu çağrıyı yaparak alın:

let connector = DataConnect.moviesConnector

Sorguları ve mutasyonları uygulama

Bağlayıcı nesnesiyle, GraphQL kaynak kodunda tanımlandığı şekilde sorgu ve mutasyon çalıştırabilirsiniz. Bağlayıcınızda aşağıdaki işlemlerin tanımlandığını varsayalım:

mutation createMovie($title: String!, $releaseYear: Int!, $genre: String!, $rating: Int!) {
  movie_insert(data: {
    title: $title
    releaseYear: $releaseYear
    genre: $genre
    rating: $rating
  })
}

query getMovieByKey($key: Movie_Key!) {
  movie(key: $key) { id title }
}

query listMoviesByGenre($genre: String!) {
  movies(where: {genre: {eq: $genre}}) {
    id
    title
  }
}

Ardından aşağıdaki şekilde film oluşturabilirsiniz:

let mutationResult = try await connector.createMovieMutation.execute(
  title: "Empire Strikes Back",
  releaseYear: 1980,
  genre: "Sci-Fi",
  rating: 5)

print("Movie ID: \(mutationResult.data.movie_insert.id)")

Bir filmi almak için sorgu referansı kullanırsınız. Tüm sorgu referansları Observable yayıncıdır. Yapılandırılan yayıncıya bağlı olarak (connector.yaml) bölümüne bakın) @Observable makrosunu (iOS 17+) destekler veya ObservableObject protokolünü uygularlar. Hiçbiri belirtilmemişse varsayılan olarak iOS 17 ve sonraki sürümlerde desteklenen @Observable makrosu kullanılır.

Bir SwiftUI görünümünde, sorgu sonuçlarını sorgu referansının yayınlanmış data değişkenini kullanarak bağlayabilir ve verileri güncellemek için sorgunun execute() yöntemini çağırabilirsiniz. data değişkeni, GQL sorgu tanımınızda tanımlanan verilerin şekliyle eşleşir.

Alınan tüm sonuçlar Decodable protokolüne uygundur. GQL getirme işleminize nesnenin birincil anahtarını dahil ettiyseniz nesneler de Identifiable olur. Böylece bunları yineleyicilerde kullanabilirsiniz.

struct ListMovieView: View {
    @StateObject private var queryRef = connector.listMoviesByGenreQuery.ref(genre: "Sci-Fi")
    var body: some View {
        VStack {
            Button {
                Task {
                    do {
                        try await refresh()
                    } catch {
                        print("Failed to refresh: \(error)")
                    }
                }
            } label: {
                Text("Refresh")
            }
                // use the query results in a view
            ForEach(queryRef.data?.movies ?? [], id: \.self.id) { movie in
                    Text(movie.title)
                }
            }
    }
    @MainActor
    func refresh() async throws {
        _ = try await queryRef.execute()
    }
}

Sorgular, tek seferlik yürütmeyi de destekler.

let resultData = try await DataConnect.moviesConnector.listMoviesByGenreQuery.execute(genre: "Sci-Fi")

iOS uygulamanızın prototipini oluşturma ve test etme

İstemcileri yerel bir emülatör kullanacak şekilde yapılandırma

Data Connect emülatörünü, Data Connect VS Code uzantısından veya KSA'dan kullanabilirsiniz.

Uygulamayı emülatöre bağlanacak şekilde ayarlama işlemi her iki senaryoda da aynıdır.

let connector = DataConnect.moviesConnector
// Connect to the emulator on "127.0.0.1:9399"
connector.useEmulator()

// (alternatively) if you're running your emulator on non-default port:
connector.useEmulator(port: 9999)

// Make calls from your app

Data Connect SDK'larındaki veri türleri

Data Connect sunucusu, yaygın ve özel GraphQL veri türlerini temsil eder. Bunlar SDK'da aşağıdaki gibi gösterilir.

Data Connect Türü Swift
Dize Dize
Int Int
Kayan Çift
Boole Boole
UUID UUID
Tarih FirebaseDataConnect.LocalDate
Zaman damgası FirebaseCore.Timestamp
Int64 Int64
Hepsi FirebaseDataConnect.AnyValue