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. Data Connect hizmetinize dağıttığınız şemaları, sorguları ve mutasyonları tasarlarken paralel olarak özel bir istemci SDK'sı oluşturursunuz. Ardından, bu SDK'daki yöntemleri istemci mantığınıza entegre edersiniz.
Başka bir yerde de belirttiğimiz gibi, Data Connectsorguların ve mutasyonların istemci kodu tarafından gönderilmediğini ve sunucuda yürütülmediğini belirtmek isteriz. Bunun yerine, dağıtılan Data Connect işlemleri Cloud Functions gibi sunucuda depolanır. Bu nedenle, mevcut kullanıcıların (ör. eski uygulama sürümlerinde) uygulamayı kullanamamasını önlemek için istemci tarafında ilgili değişiklikleri dağıtmanız gerekir.
Bu nedenle Data Connect, sunucu üzerinde dağıtılan şemalarınızı, sorgularınızı ve mutasyonlarınızı prototip haline getirmenizi sağlayan bir geliştirici ortamı ve araçları sunar. Ayrıca, siz prototip oluştururken istemci tarafı SDK'ları otomatik olarak oluşturur.
Hizmetinizde ve istemci uygulamalarınızda güncellemeleri iteratif olarak uyguladığınızda hem sunucu hem de istemci tarafı güncellemeleri dağıtılmaya hazır olur.
Müşteri geliştirme iş akışı nedir?
Başlayın bölümünü izlediyseniz Data Connect için genel geliştirme akışıyla tanıştırıldınız. Bu kılavuzda, şemanızdan Swift SDK'ları oluşturma ve istemci sorguları ve mutasyonlarla çalışma hakkında daha ayrıntılı bilgi bulabilirsiniz.
Özetlemek gerekirse, oluşturulan Swift SDK'larını istemci uygulamalarınızda kullanmak için aşağıdaki ön koşul adımlarını uygularsınız:
- Firebase'i iOS uygulamanıza ekleyin.
Oluşturulan SDK'yı kullanmak için Xcode'da bağımlılık olarak yapılandırın.
Xcode'un üst gezinme çubuğunda Dosya > Paket Bağımlılıkları Ekle > Yerel Ekle'yi seçin ve oluşturulan
Package.swift
dosyasını içeren klasörü seçin.
Ardından:
- Uygulama şemanızı geliştirin.
SDK oluşturma işlemini ayarlayın:
- Data Connect VS Code uzantımızdaki SDK'yı uygulamaya ekle düğmesiyle
connector.yaml
'inizi güncelleyerek
Data Connect emülatörünü kurup kullanın ve iterasyon yapın.
Swift SDK'nızı oluşturma
Çoğu Firebase projesinde olduğu gibi, Firebase Data Connect istemci kodunuz üzerinde yerel bir proje dizininde çalışırsınız. Hem Data Connect VS Code uzantısı hem de Firebase CLI, istemci kodu oluşturmak ve yönetmek için önemli yerel araçlardır.
SDK oluşturma seçenekleri, projenizi ilk kez başlattığınızda oluşturulan dataconnect.yaml
dosyasında çeşitli girişlere göre ayarlanır.
SDK oluşturma işlemini başlatma
connector.yaml
dosyanıza outputDir
, package
ve (web SDK'sı için) packageJsonDir
dosyalarınızı ekleyin.
connectorId: "movies"
generate:
swiftSdk:
outputDir: "../movies-generated"
package: "Movies"
outputDir
, oluşturulan SDK'nın nereye yayınlanacağını belirtir. Belirtilmezse varsayılan çıkış dizini olarak bağlayıcı klasörü kullanılır.
package
, oluşturulacak paketin adını belirtir. Oluşturucu, paketin adını taşıyan ve Package.swift
ile oluşturulan kodu içeren bir klasör oluşturur.
observablePublisher
(isteğe bağlı), sorgu referanslarında kullanılacak Observable yayıncıyı belirtir. Olası değerler observableMacro
(iOS 17 ve sonraki sürümler) ve observableObject
'dir (iOS 17 öncesi sürümler). Bir değer belirtilmezse varsayılan değer observableMacro
olur.
Prototip oluşturma aşamasında SDK'ları güncelleme
Data Connect VS Code uzantısı ve Data Connect emülatörüyle etkileşimli olarak 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.
.gql
güncellemelerini izleyebilir ve SDK kaynaklarının otomatik olarak güncellenmesini sağlayabilirsiniz.
Alternatif olarak, .gql dosyaları değiştiğ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
Proje kaynaklarını CI testlerine gönderilecek şekilde hazırlama gibi bazı senaryolarda toplu güncelleme için Firebase CLI'yi çağırabilirsiniz.
Bu durumlarda firebase dataconnect:sdk:generate
simgesini kullanın.
Data Connect iOS SDK'sını başlatma
Data Connect'i ayarlamak için kullandığınız bilgileri kullanarak Data Connect örneğinizi başlatın (tüm bilgiler Firebase konsolunun Data Connect sekmesinde bulunur).
Bağlayıcı örneği alma
Bağlayıcınızın kodu, Data Connect emülatör tarafından oluşturulur. Bağlayıcı adınız movies
ve paket connector.yaml
'te belirtildiği gibi movies
ise aşağıdakileri çağırarak bağlayıcı nesnesini alın:
let connector = DataConnect.moviesConnector
Sorguları ve mutasyonları uygulama
Bağlantılayıcı nesnesi ile GraphQL kaynak kodunda tanımlandığı şekilde sorgular ve mutasyonlar ç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 gibi bir 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)")
Film almak için bir sorgu referansı kullanırsınız. Tüm sorgu referansları gözlemlenebilir yayıncılardır. Yapılandırılmış yayıncıya bağlı olarak (connector.yaml)
bölümüne bakın), @Observable
makrosunu (iOS 17 ve sonraki sürümler) destekler veya ObservableObject
protokolünü uygular. Hiçbiri belirtilmezse varsayılan olarak iOS 17 ve sonraki sürümlerde desteklenen @Observable
makrosu kullanılır.
SwiftUI görünümünde, sorgu referansının yayınlanmış data
değişkenini kullanarak sorgu sonuçlarını bağlayabilir ve verileri güncellemek için sorgunun execute()
yöntemini çağırabilirsiniz. data
değişkeni, GQL sorgu tanımınıza tanımlanan verilerin şekliyle eşleşir.
Alınan tüm sonuçlar Decodable
protokolüne uygundur. Nesnenin birincil anahtarını GQL getirme işleminize dahil ettiyseniz nesneler de Identifiable
olur ve bunları iteratörlerde 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 ayarlama
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 senaryo için de 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 temsil edilir.
Veri Bağlantısı 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 |