Uygulamanızı bağlayıp prototip oluşturmaya başlayın


Firebase Local Emulator Suite ile çalışmaya başlamadan önce bir Firebase projesi oluşturduğunuzdan, geliştirme ortamınızı oluşturduğunuzdan ve platformunuz için Firebase SDK'larını seçip yüklediğinizden emin olun. Platformunuza göre Firebase'i kullanmaya başlama konularına göz atın: Apple, Android veya Web.

Prototip oluşturma ve test etme

Local Emulator Suite, Firebase Local Emulator Suite'e Giriş bölümünde açıklandığı gibi çeşitli ürün emülatörleri içerir. Üretimde kullandığınız Firebase ürünlerine göre, tek tek emülatörlerle veya emülatör kombinasyonlarıyla prototip oluşturabilir ve test yapabilirsiniz.

Firebase veritabanı ile işlev emülatörleri arasındaki etkileşim
Tam Local Emulator Suite kapsamında veritabanı ve Cloud Functions emülatörleri.

Bu konuda, Local Emulator Suite iş akışını tanıtmak için tipik bir ürün kombinasyonunu kullanan bir uygulama üzerinde çalıştığınızı varsayalım: Firebase veritabanı ve bu veritabanındaki işlemler tarafından tetiklenen bulut işlevleri.

Firebase projenizi yerel olarak başlattıktan sonra, Local Emulator Suite kullanan geliştirme döngüsü genellikle üç adımdan oluşur:

  1. Prototip özellikleri, emülatörlerle ve Emulator Suite UI ile etkileşimli olarak kullanılabilir.

  2. Veritabanı emülatör veya Cloud Functions emülatör kullanıyorsanız uygulamanızı emülatörlere bağlamak için tek seferlik bir adım uygulayın.

  3. Emülatörleri ve özel komut dosyalarını kullanarak testlerinizi otomatikleştirin.

Firebase projesini yerel olarak başlatma

CLI'yi yüklediğinizden veya en son sürümüne güncellediğinizden emin olun.

curl -sL firebase.tools | bash

Henüz yapmadıysanız mevcut çalışma dizinini Firebase projesi olarak başlatın. Ekrandaki talimatları uygulayarak Cloud Functions ve Cloud Firestore veya Realtime Database kullandığınızı belirtin:

firebase init

Proje dizininizde artık Firebase yapılandırma dosyaları, veritabanı için bir Firebase Security Rules tanım dosyası, bulut işlevleri kodunu içeren bir functions dizini ve diğer destekleyici dosyalar yer alır.

Etkileşimli prototip oluşturma

Local Emulator Suite, yeni özellikleri hızlıca prototip haline getirmenize olanak tanıyacak şekilde tasarlanmıştır. Suite'in yerleşik kullanıcı arayüzü, en kullanışlı prototip oluşturma araçlarından biridir. Bu, Firebase konsolunu yerel olarak çalıştırmaya benzer.

Emulator Suite UI'ü kullanarak bir veritabanının tasarımını yineleyebilir, Cloud Functions içeren farklı veri akışlarını deneyebilir, Güvenlik Kuralları değişikliklerini değerlendirebilir, arka uç hizmetlerinizin nasıl performans gösterdiğini onaylamak için günlükleri kontrol edebilir ve daha fazlasını yapabilirsiniz. Ardından, baştan başlamak isterseniz veritabanınızı temizleyip yeni bir tasarım fikriyle sıfırdan başlayabilirsiniz.

Local Emulator Suite'ü şu şekilde başlattığınızda tüm bu özellikler kullanılabilir:

firebase emulators:start

Hayali uygulamamızın prototipini oluşturmak için bir veritabanındaki metin girişlerini değiştirmek üzere temel bir bulut işlevi oluşturup test edelim ve bu işlevi tetiklemek için Emulator Suite UI içinde bu veritabanını oluşturup dolduralım.

  1. Proje dizininizdeki functions/index.js dosyasını düzenleyerek veritabanı yazma işlemlerinden tetiklenen bir Cloud Functions işlevi oluşturun. Mevcut dosyanın içeriğini aşağıdaki snippet ile değiştirin. Bu işlev, messages koleksiyonundaki dokümanlarda yapılan değişiklikleri izler, bir dokümanın original alanının içeriğini büyük harfe dönüştürür ve sonucu ilgili dokümanın uppercase alanında depolar.
  2.   const functions = require('firebase-functions/v1');
    
      exports.makeUppercase = functions.firestore.document('/messages/{documentId}')
          .onCreate((snap, context) => {
            const original = snap.data().original;
            console.log('Uppercasing', context.params.documentId, original);
            const uppercase = original.toUpperCase();
            return snap.ref.set({uppercase}, {merge: true});
          });
      
  3. Local Emulator Suitefirebase emulators:start ile başlatın. Cloud Functions ve veritabanı emülatörleri, birlikte çalışacak şekilde otomatik olarak yapılandırılmış olarak başlatılır.
  4. Kullanıcı arayüzünü http://localhost:4000 adresinde tarayıcınızda görüntüleyin. Kullanıcı arayüzü için varsayılan bağlantı noktası 4000'dir ancak Firebase KSA tarafından oluşturulan terminal mesajlarını kontrol edin. Mevcut emülatörlerin durumunu not edin. Bizim örneğimizde, Cloud Functions ve Cloud Firestore emülatörleri çalışacaktır.
    Resmim
  5. Kullanıcı arayüzünde Firestore > Veriler sekmesinde Koleksiyon başlat'ı tıklayın ve original alan adı ve test değeri olan bir messages koleksiyonunda yeni bir doküman oluşturmak için talimatları uygulayın. Bu, bulut işlevimizi tetikler. Kısa süre sonra "TEST" dizesini içeren yeni bir uppercase alanının göründüğünü fark edin.
    Resmim Resmim
  6. Firestore > İstekler sekmesinde, bu istekleri yerine getirmek için yapılan tüm Firebase Security Rules değerlendirmeleri de dahil olmak üzere, emülasyon yapılan veritabanınıza gönderilen istekleri inceleyin.
  7. İşlevinizin veritabanı güncellemesi sırasında hatalarla karşılaşmadığını doğrulamak için Günlük sekmesini kontrol edin.

Uygulama içi veritabanı erişim koduna dokunmadan, test paketlerini yeniden derlemeden ve yeniden çalıştırmadan, aradığınız veri akışını elde edene kadar bulut işlevi kodunuz ve etkileşimli veritabanı düzenlemeleri arasında kolayca geçiş yapabilirsiniz.

Uygulamanızı emülatörlere bağlama

Etkileşimli prototipleme konusunda iyi bir ilerleme kaydettiğinizde ve bir tasarıma karar verdiğinizde, uygun SDK'yı kullanarak uygulamanıza veritabanı erişim kodu eklemeye hazır olursunuz. Uygulamanızın davranışının doğru olduğunu onaylamak için veritabanı sekmesini ve işlevler için Emulator Suite UI'deki Günlükler sekmesini kullanmaya devam edersiniz.

Local Emulator Suite'ün yerel bir geliştirme aracı olduğunu unutmayın. Üretim veritabanlarınıza yapılan yazma işlemleri, yerel olarak prototipini oluşturduğunuz işlevleri tetiklemez.

Uygulamanızın veritabanına yazma işlemi yapmasına geçmek için test sınıflarınızı veya uygulama içi yapılandırmanızı Cloud Firestoreemülatöre yönlendirmeniz gerekir.

Kotlin+KTX
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
val firestore = Firebase.firestore
firestore.useEmulator("10.0.2.2", 8080)

firestore.firestoreSettings = firestoreSettings {
    isPersistenceEnabled = false
}
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
FirebaseFirestore firestore = FirebaseFirestore.getInstance();
firestore.useEmulator("10.0.2.2", 8080);

FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
        .setPersistenceEnabled(false)
        .build();
firestore.setFirestoreSettings(settings);
Swift
let settings = Firestore.firestore().settings
settings.host = "127.0.0.1:8080"
settings.cacheSettings = MemoryCacheSettings()
settings.isSSLEnabled = false
Firestore.firestore().settings = settings

Web

import { getFirestore, connectFirestoreEmulator } from "firebase/firestore";

// firebaseApps previously initialized using initializeApp()
const db = getFirestore();
connectFirestoreEmulator(db, '127.0.0.1', 8080);

Web

// Firebase previously initialized using firebase.initializeApp().
var db = firebase.firestore();
if (location.hostname === "localhost") {
  db.useEmulator("127.0.0.1", 8080);
}

Özel komut dosyalarıyla testlerinizi otomatikleştirme

Şimdi genel iş akışının son adımına geçelim. Uygulama içi özelliğinizin prototipini oluşturduktan ve tüm platformlarınızda umut verici sonuçlar elde ettikten sonra nihai uygulama ve test aşamasına geçebilirsiniz. Birim testi ve CI iş akışları için exec komutunu kullanarak tek bir çağrıda emülatörleri başlatabilir, komut dosyası testleri çalıştırabilir ve emülatörleri kapatabilirsiniz:

firebase emulators:exec "./testdir/test.sh"

Emülatörleri daha ayrıntılı şekilde inceleme

Temel istemci tarafı iş akışının nasıl göründüğünü gördükten sonra, Suite'teki her bir emülatörle ilgili ayrıntılara (ör. sunucu tarafı uygulama geliştirme için nasıl kullanılacağı) geçebilirsiniz:

Sonrasında ne olacak?

Yukarıda bağlantısı verilen belirli emülatörlerle ilgili konuları okumayı unutmayın. Ardından: