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 Flutter SDK'ları oluşturma, istemci sorguları ve mutasyonlarla çalışma hakkında daha ayrıntılı bilgi bulabilirsiniz.
Özetlemek gerekirse, oluşturulan Flutter SDK'larını istemci uygulamalarınızda kullanmak için aşağıdaki ön koşul adımlarını uygulamanız gerekir:
- Firebase'i Flutter uygulamanıza ekleyin.
- flutterfire CLI'yı yükleyin
dart pub global activate flutterfire_cli
. - Koşu
flutterfire configure
.
Ardından:
- Uygulama şemanızı geliştirin.
SDK oluşturmayı ayarlayın:
- Data Connect VS Code uzantımızdaki SDK'yı uygulamaya ekle düğmesiyle
connector.yaml
cihazınızı güncelleyerek
Data Connect emülatörünü ayarlayıp kullanın ve yineleyin.
Flutter SDK'nızı oluşturun
Ç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:
dartSdk:
outputDir: ../../lib/generated # Feel free to change this to a different path
package: movies
outputDir
, oluşturulan SDK'nın nereye çıkış yapacağını belirtir. Bu yol, connector.yaml
dosyasının bulunduğu dizine göre belirlenir.
İsteğe bağlı olarak, outputDir
dosyanızın mutlak yolunu belirtebilirsiniz.
package
, paket adını belirtir.
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.
.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.
Müşteri kodunu ayarlama
Data Connect uygulamanızı başlatın
Öncelikle standart Firebase kurulum talimatlarını kullanarak uygulamanızı başlatın.
Ardından, Data Connect eklentisini yükleyin:
flutter pub add firebase_data_connect
Data Connect Flutter SDK'sını başlatın.
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).
Kitaplıkları içe aktarma
İstemci kodunuzu başlatmak için iki grup içe aktarma işlemi gerekir: genel Data Connect içe aktarma işlemleri ve belirli, oluşturulmuş SDK içe aktarma işlemleri.
// general imports
import 'package:firebase_data_connect/firebase_data_connect.dart';
// generated queries and mutations from SDK
import 'generated/movies.dart';
İstemci tarafında sorgu kullanma
Oluşturulan kodda önceden tanımlanmış sorgu referansları bulunur. Yapmanız gereken tek şey bunları içe aktarmak ve execute
işlevini çağırmak.
import 'generated/movies.dart';
await MoviesConnector.instance.listMovies().execute();
SDK sorgu yöntemlerini çağırma
Bu işlem kısayolu işlevlerinin kullanıldığı bir örneği aşağıda bulabilirsiniz:
import 'generated/movies.dart';
function onBtnClick() {
// This will call the generated Dart from the CLI and then make an HTTP request to the server.
MoviesConnector.instance.listMovies().execute().then(data => showInUI(data)); // == MoviesConnector.instance.listMovies().ref().execute();
}
İsteğe bağlı alanlar
Bazı sorgularda isteğe bağlı alanlar olabilir. Bu durumlarda Flutter SDK bir oluşturucu yöntemi kullanır ve ayrı olarak ayarlanması gerekir.
Örneğin, createMovie
çağrılırken rating
alanı isteğe bağlıdır. Bu nedenle, oluşturucu işlevinde bu alanı sağlamanız gerekir.
await MoviesConnector.instance.createMovie({ title: 'Empire Strikes Back', releaseYear: 1980, genre: "Sci-Fi"}).rating(5).execute();
Değişikliklere abone olma
Değişikliklere abone olabilirsiniz (bu değişiklikler, sorgu yürüttüğünüz her seferde güncellenir).
QueryRef<ListMoviesData, void> listRef = MoviesConnector.instance.listMovies().ref();
// subscribe will immediately invoke the query if no execute was called on it previously.
listRef.subscribe().listen((data) {
updateUIWithMovies(data.movies);
});
await MoviesConnector.instance.createMovie({ title: 'Empire Strikes Back', releaseYear: 1980, genre: "Sci-Fi" }).rating(5).execute();
await listRef.execute(); // will update the subscription above`
İstemci tarafında mutasyonları kullanma
Mutasyonlara sorgularla aynı şekilde erişilebilir.
await MoviesConnector.instance.createMovie({ title: 'Empire Strikes Back', releaseYear: 1980, genre: "Sci-Fi" }).rating(5).execute();
Flutter uygulamalarını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.
import 'package:firebase_data_connect/firebase_data_connect.dart';
import 'generated/movies.dart';
MoviesConnector.instance.dataConnect
.useDataConnectEmulator('127.0.0.1', 9399);
// Make calls from your app
QueryRef<ListMoviesData, void> ref = MoviesConnector.instance.listMovies.ref();
Üretim kaynaklarına geçmek için emülatöre bağlanma satırlarını yorum satırı yapın.
Dart SDK'sındaki veri türleri
Data Connect sunucusu, yaygın GraphQL veri türlerini temsil eder. Bunlar, SDK'da aşağıdaki gibi gösterilir.
Data Connect Türü | Dart |
---|---|
Zaman damgası | firebase_data_connect.Timestamp |
Int (32 bit) | int |
Tarih | DateTime |
UUID | dize |
Int64 | int |
Kayan | double |
Boole | bool |
Hepsi | firebase_data_connect.AnyValue |