Firebase Android Codelab - Dostça Sohbet Oluşturun

1. Genel Bakış

ekran görüntüsü

Resim: Çalışan Dostu Sohbet uygulaması.

Dostça Sohbet kod laboratuvarına hoş geldiniz. Bu kod laboratuvarında, Android'de bir sohbet uygulaması oluşturmak için Firebase platformunu nasıl kullanacağınızı öğreneceksiniz.

ne öğreneceksin

  • Kullanıcıların oturum açmasına izin vermek için Firebase Kimlik Doğrulaması nasıl kullanılır?
  • Firebase Gerçek Zamanlı Veritabanını kullanarak veriler nasıl senkronize edilir.
  • Firebase için Cloud Storage'da ikili dosyalar nasıl saklanır?
  • Firebase ile bir Android uygulaması geliştirmek için Firebase Local Emulator Suite nasıl kullanılır?

Neye ihtiyacın olacak

  • Android Studio sürüm 4.2+.
  • Bir Android Emulator Android ile 5.0+.
  • Java 7 veya üstü. Java bu kullanmak yüklemek için talimatları ; sürümünüzü, çalışma kontrol etmek java -version .
  • Kotlin programlama diline aşinalık.

2. Örnek kodu alın

Depoyu klonla

GitHub deposunu komut satırından klonlayın:

$ git clone https://github.com/firebase/codelab-friendlychat-android

Android Studio'ya aktar

Android Studio, Dosya> seçeneğini ve ardından, build-android-start (dizin android_studio_klasörü ) örnek kodu indirdiğiniz dizinden.

Artık olmalıdır build-android-start Android Studio açık projeyi. Bir hakkında bir uyarı görürseniz google-services.json eksik dosya endişe yok. Daha sonraki bir adımda eklenecektir.

Bağımlılıkları kontrol et

Bu codelab'de, ihtiyaç duyacağınız tüm bağımlılıklar sizin için zaten eklenmiş, ancak Firebase SDK'sını uygulamanıza nasıl ekleyeceğinizi anlamak önemlidir:

build.gradle

buildscript {
    // ...

    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.2'

        // The google-services plugin is required to parse the google-services.json file
        classpath 'com.google.gms:google-services:4.3.5'
    }
}

uygulama/build.gradle

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'com.google.gms.google-services'
}

android {
    // ...
}

dependencies {
    // ...

    // Google Sign In SDK
    implementation 'com.google.android.gms:play-services-auth:19.0.0'

    // Firebase SDK
    implementation platform('com.google.firebase:firebase-bom:26.6.0')
    implementation 'com.google.firebase:firebase-database-ktx'
    implementation 'com.google.firebase:firebase-storage-ktx'
    implementation 'com.google.firebase:firebase-auth-ktx'

    // Firebase UI Library
    implementation 'com.firebaseui:firebase-ui-auth:7.2.0'
    implementation 'com.firebaseui:firebase-ui-database:7.2.0'
}

3. Firebase CLI'yi yükleyin

Çalıştırmak için Firebase Emülatörü Suite , yüklemek ve kullanmak gerekir Firebase CLI .

CLI'yi yükleyin

Seçenek 1 - npm ile yükleyin

Makinenizde zaten Node.js ve npm kuruluysa, CLI'yi aşağıdaki komutla kurabilirsiniz:

npm install -g firebase-tools@latest

Seçenek 2 - Bağımsız ikili dosyayı yükleyin

Eğer node.js / UÖM'sini yok ya da uygulama geliştirme yeniyseniz, aşağıdaki bağımsız bir ikili olarak CLI yükleyebilirsiniz burada platformu için talimatlar .

Kurulumu kontrol et

Eğer Firebase CLI kurduktan sonra, emin sürümüne sahip olmak için aşağıdaki komutu çalıştırın 9.11.0 veya daha yüksek:

firebase --version

4. Firebase Emulator Suite'e bağlanın

Emülatörleri başlatın

Terminalinizin, yerel kökünden aşağıdaki komutu çalıştırın codelab-friendlychat-android dizinine:

firebase emulators:start --project=demo-friendlychat-android

Bunun gibi bazı günlükler görmelisiniz. Bağlantı noktası değerleri tanımlandı firebase.json klonlanmış örnek kod dahil dosyası.

$ firebase emulators:start --project=demo-friendlychat-android
i  emulators: Starting emulators: auth, database, storage
i  emulators: Detected demo project ID "demo-friendlychat-android", emulated services will use a demo configuration and attempts to access non-emulated services for this project will fail.
i  database: Database Emulator logging to database-debug.log
i  ui: Emulator UI logging to ui-debug.log

┌─────────────────────────────────────────────────────────────┐
│ ✔  All emulators ready! It is now safe to connect your app. │
│ i  View Emulator UI at http://localhost:4000                │
└─────────────────────────────────────────────────────────────┘

┌────────────────┬────────────────┬────────────────────────────────┐
│ Emulator       │ Host:Port      │ View in Emulator UI            │
├────────────────┼────────────────┼────────────────────────────────┤
│ Authentication │ localhost:9099 │ http://localhost:4000/auth     │
├────────────────┼────────────────┼────────────────────────────────┤
│ Database       │ localhost:9000 │ http://localhost:4000/database │
├────────────────┼────────────────┼────────────────────────────────┤
│ Storage        │ localhost:9199 │ http://localhost:4000/storage  │
└────────────────┴────────────────┴────────────────────────────────┘
  Emulator Hub running at localhost:4400
  Other reserved ports: 4500

Issues? Report them at https://github.com/firebase/firebase-tools/issues and attach the *-debug.log files.

Gidin http: // localhost: 4000 Firebase Emülatörü Suite UI görüntülemek için web tarayıcısında:

Emulator Suite UI ana sayfası

Leave emulators:start codelab geri kalanı için komut çalışan.

Uygulamanızı bağlayın

Android Studio'da açık MainActivity.kt ardından iç aşağıdaki kodu ekleyin onCreate yöntemle:

// When running in debug mode, connect to the Firebase Emulator Suite.
// "10.0.2.2" is a special IP address which allows the Android Emulator
// to connect to "localhost" on the host computer. The port values (9xxx)
// must match the values defined in the firebase.json file.
if (BuildConfig.DEBUG) {
    Firebase.database.useEmulator("10.0.2.2", 9000)
    Firebase.auth.useEmulator("10.0.2.2", 9099)
    Firebase.storage.useEmulator("10.0.2.2", 9199)
}

5. Başlangıç ​​uygulamasını çalıştırın

google-services.json'u ekleyin

Firebase bağlanmak için Android uygulaması için için, bir eklemelisiniz google-services.json içindeki dosyayı app , Android projesinin klasöründe. Bu kod laboratuvarının amaçları doğrultusunda, Firebase Emulator Suite'e bağlanmanıza izin verecek bir sahte JSON dosyası sağladık.

Kopya mock-google-services.json dosyayı build-android-start/app olarak klasöründe google-services.json :

cp mock-google-services.json build-android-start/app/google-services.json

Bu kod laboratuvarının son adımında, bu sahte JSON dosyasını kendi yapılandırmanızla değiştirebilmeniz için gerçek bir Firebase projesi ve Firebase Android Uygulaması oluşturmayı öğreneceksiniz.

Uygulamayı çalıştırın

Projeyi Android Studio'ya aktardığınıza ve bir Firebase yapılandırma JSON dosyası eklediğinize göre, uygulamayı ilk kez çalıştırmaya hazırsınız.

  1. Android Emülatörünüzü başlatın.
  2. Android Studio'da, Çalıştır (tıklayınuygulamak ) araç çubuğunda.

Uygulama, Android Emülatörünüzde başlatılmalıdır. Bu noktada boş bir mesaj listesi görmelisiniz ve mesaj gönderme ve alma çalışmayacaktır. Bu kod laboratuvarının sonraki adımında, Dostça Sohbet'i kullanabilmeleri için kullanıcıların kimliğini doğrulayacaksınız.

6. Kimlik Doğrulamayı Etkinleştir

Bu uygulama, tüm sohbet mesajlarını saklamak için Firebase Realtime Database'i kullanacaktır. Yine de veri eklemeden önce, uygulamanın güvenli olduğundan ve yalnızca kimliği doğrulanmış kullanıcıların mesaj gönderebildiğinden emin olmalıyız. Bu adımda Firebase Authentication'ı etkinleştireceğiz ve Realtime Database Security Rules'u yapılandıracağız.

Temel oturum açma işlevi ekleyin

Ardından, kullanıcıları algılamak ve bir oturum açma ekranı uygulamak için uygulamaya bazı temel Firebase Kimlik Doğrulama kodu ekleyeceğiz.

Mevcut kullanıcıyı kontrol et

İlk aşağıdaki örnek değişkeni eklemek MainActivity.kt sınıfında:

MainActivity.kt

// Firebase instance variables
private lateinit var auth: FirebaseAuth

Şimdi değiştirmenize izin MainActivity onlar uygulamayı açıp doğrulanmamış olduklarında oturum açma ekranında kullanıcıyı göndermek. İçin aşağıdakileri ekleyin onCreate() sonra yöntemi binding görünümüne bağlı olduğu:

MainActivity.kt

// Initialize Firebase Auth and check if the user is signed in
auth = Firebase.auth
if (auth.currentUser == null) {
    // Not signed in, launch the Sign In activity
    startActivity(Intent(this, SignInActivity::class.java))
    finish()
    return
}

Ayrıca kullanıcı sırasında imzalanan olup olmadığını kontrol etmek istiyorum onStart() :

MainActivity.kt

public override fun onStart() {
    super.onStart()
    // Check if user is signed in.
    if (auth.currentUser == null) {
        // Not signed in, launch the Sign In activity
        startActivity(Intent(this, SignInActivity::class.java))
        finish()
        return
    }
}

Sonra uygulamak getUserPhotoUrl() ve getUserName() halihazırda doğrulanmış Firebase kullanıcı hakkında gerekli bilgileri dönmek için yöntemleri:

MainActivity.kt

private fun getPhotoUrl(): String? {
    val user = auth.currentUser
    return user?.photoUrl?.toString()
}

private fun getUserName(): String? {
    val user = auth.currentUser
    return if (user != null) {
        user.displayName
    } else ANONYMOUS
}

Sonra uygulamak signOut() düğmesi dışarı işareti işlemek için yöntem:

MainActivity.kt

private fun signOut() {
    AuthUI.getInstance().signOut()
    startActivity(Intent(this, SignInActivity::class.java))
    finish()
}

Artık gerektiğinde kullanıcıyı oturum açma ekranına göndermek için tüm mantığa sahibiz. Ardından, kullanıcıların kimliğini doğru şekilde doğrulamak için oturum açma ekranını uygulamamız gerekiyor.

Oturum Açma ekranını uygulayın

Dosyasını açın SignInActivity.kt . Burada, kimlik doğrulamayı başlatmak için basit bir Oturum Aç düğmesi kullanılır. Bu bölümde, oturum açma mantığını uygulamak için FirebaseUI kullanacaksınız.

Bir Auth örnek değişkeni ekleyin SignInActivity altında sınıfının // Firebase instance variables comment:

SignInActivity.kt

// Firebase instance variables
private lateinit var auth: FirebaseAuth

Ardından, düzenleme onCreate() yöntemi, yaptığı aynı şekilde Firebase başlatmak için MainActivity :

SignInActivity.kt

// Initialize FirebaseAuth
auth = Firebase.auth

Bir ekleme ActivityResultLauncher alanını SignInActivity :

SignInActivity.kt

// ADD THIS
private val signIn: ActivityResultLauncher<Intent> =
        registerForActivityResult(FirebaseAuthUIActivityResultContract(), this::onSignInResult)

override fun onCreate(savedInstanceState: Bundle?) {
    // ...
}

Daha sonra, düzenlemek onStart() akışında FirebaseUI işareti başlaması yöntemi:

SignInActivity.kt

public override fun onStart() {
    super.onStart()

    // If there is no signed in user, launch FirebaseUI
    // Otherwise head to MainActivity
    if (Firebase.auth.currentUser == null) {
        // Sign in with FirebaseUI, see docs for more details:
        // https://firebase.google.com/docs/auth/android/firebaseui
        val signInIntent = AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setLogo(R.mipmap.ic_launcher)
                .setAvailableProviders(listOf(
                        AuthUI.IdpConfig.EmailBuilder().build(),
                        AuthUI.IdpConfig.GoogleBuilder().build(),
                ))
                .build()

        signIn.launch(signInIntent)
    } else {
        goToMainActivity()
    }
}

Daha sonra, uygulamaya onSignInResult sonucu işareti işlemek için yöntem. Signin sonucu başarılı olursa, devam MainActivity :

SignInActivity.kt

private fun onSignInResult(result: FirebaseAuthUIAuthenticationResult) {
    if (result.resultCode == RESULT_OK) {
        Log.d(TAG, "Sign in successful!")
        goToMainActivity()
    } else {
        Toast.makeText(
                this,
                "There was an error signing in",
                Toast.LENGTH_LONG).show()

        val response = result.idpResponse
        if (response == null) {
            Log.w(TAG, "Sign in canceled")
        } else {
            Log.w(TAG, "Sign in error", response.error)
        }
    }
}

Bu kadar! FirebaseUI ile kimlik doğrulamayı yalnızca birkaç yöntem çağrısında ve herhangi bir sunucu tarafı yapılandırmasını yönetmeye gerek duymadan uyguladınız.

Çalışmanızı test edin

Uygulamayı Android Emülatörünüzde çalıştırın. Hemen oturum açma ekranına gönderilmelidir. Daha sonra bir hesap oluşturmak, e-posta düğmesi ile Oturum dokunun. Her şey doğru bir şekilde uygulandıysa, mesajlaşma ekranına gönderilmelidir.

Oturum açtıktan sonra, daha sonra, tarayıcınızda Firebase Emulator Suite UI açmak bu ilk oturum açan kullanıcı hesabına görmek için Kimlik Doğrulama sekmesini tıklayın.

7. Mesajları okuyun

Bu adımda, Realtime Database'de saklanan mesajları okumak ve görüntülemek için işlevsellik ekleyeceğiz.

Örnek mesajları içe aktar

  1. Firebase Emulator Suite arayüzünde, Gerçek Zamanlı Veri Tabanı sekmesini seçin.
  2. Sürükle ve bırak initial_messages.json veri görüntüleyici içine codelab depo yerel kopyasından dosyayı.

Artık altında birkaç mesajlar olmalıdır messages veritabanının düğümü.

Verileri oku

Mesajları senkronize et

Bu bölümde, yeni eklenen mesajları uygulama kullanıcı arayüzüne senkronize eden kodu şu şekilde ekliyoruz:

  • Firebase Gerçek Zamanlı Veritabanını başlatma ve verilerde yapılan değişiklikleri işlemek için bir dinleyici ekleme.
  • Güncellenmesi RecyclerView yeni mesajlar gösterilir böylece adaptörü.
  • Daki diğer Firebase örnek değişkenleri ile Veritabanı örnek değişkenler ekleme MainActivity sınıfında:

MainActivity.kt

// Firebase instance variables
// ...
private lateinit var db: FirebaseDatabase
private lateinit var adapter: FriendlyMessageAdapter

Senin MainActivity en değiştirin onCreate() yorumun altında yöntemi // Initialize Realtime Database and FirebaseRecyclerAdapter aşağıda tanımlanan kodla. Bu kod Gerçek Zamanlı veritabanından tüm mevcut iletileri ekler ve sonra altında yeni alt girişler için dinler messages sizin Firebase Gerçek Zamanlı Veritabanında yolu. Her mesaj için kullanıcı arayüzüne yeni bir öğe ekler:

MainActivity.kt

// Initialize Realtime Database
db = Firebase.database
val messagesRef = db.reference.child(MESSAGES_CHILD)

// The FirebaseRecyclerAdapter class and options come from the FirebaseUI library
// See: https://github.com/firebase/FirebaseUI-Android
val options = FirebaseRecyclerOptions.Builder<FriendlyMessage>()
    .setQuery(messagesRef, FriendlyMessage::class.java)
    .build()
adapter = FriendlyMessageAdapter(options, getUserName())
binding.progressBar.visibility = ProgressBar.INVISIBLE
manager = LinearLayoutManager(this)
manager.stackFromEnd = true
binding.messageRecyclerView.layoutManager = manager
binding.messageRecyclerView.adapter = adapter

// Scroll down when a new message arrives
// See MyScrollToBottomObserver for details
adapter.registerAdapterDataObserver(
    MyScrollToBottomObserver(binding.messageRecyclerView, adapter, manager)
)

Next FriendlyMessageAdapter.kt sınıf uygulamak bind() iç sınıf içindeki yöntemi MessageViewHolder() :

FriendlyMessageAdapter.kt

inner class MessageViewHolder(private val binding: MessageBinding) : ViewHolder(binding.root) {
    fun bind(item: FriendlyMessage) {
        binding.messageTextView.text = item.text
        setTextColor(item.name, binding.messageTextView)

        binding.messengerTextView.text = if (item.name == null) ANONYMOUS else item.name
        if (item.photoUrl != null) {
            loadImageIntoView(binding.messengerImageView, item.photoUrl!!)
        } else {
            binding.messengerImageView.setImageResource(R.drawable.ic_account_circle_black_36dp)
        }
    }
    ...
}

Biz de bu yüzden de uygulamak görüntülerdir ekran mesajlarına ihtiyaç bind() iç sınıf içinde yöntemini ImageMessageViewHolder() :

FriendlyMessageAdapter.kt

inner class ImageMessageViewHolder(private val binding: ImageMessageBinding) :
    ViewHolder(binding.root) {
    fun bind(item: FriendlyMessage) {
        loadImageIntoView(binding.messageImageView, item.imageUrl!!)

        binding.messengerTextView.text = if (item.name == null) ANONYMOUS else item.name
        if (item.photoUrl != null) {
            loadImageIntoView(binding.messengerImageView, item.photoUrl!!)
        } else {
            binding.messengerImageView.setImageResource(R.drawable.ic_account_circle_black_36dp)
        }
    }
}

Son olarak, geri MainActivity , başlangıç ve durma Firebase Gerçek Zamanlı veritabanından güncellemeler için dinleme. Güncelleştirme onPause() ve onResume() yöntemleri MainActivity aşağıdaki gibi gösterilir:

MainActivity.kt

public override fun onPause() {
    adapter.stopListening()
    super.onPause()
}

public override fun onResume() {
    super.onResume()
    adapter.startListening()
}

Senkronizasyon mesajlarını test edin

  1. (Çalıştır tıklayınuygulamak ).
  2. Emülatörü Suite arayüzünde, elle ardından, Gerçek Zamanlı Veri Tabanı sekmesine dönün Yeni bir ileti ekleyin. Mesajın Android uygulamanızda göründüğünü onaylayın:

Tebrikler, uygulamanıza gerçek zamanlı bir veritabanı eklediniz!

8. Mesaj Gönder

Metin mesajı göndermeyi uygula

Bu bölümde, uygulama kullanıcılarının kısa mesaj gönderme özelliğini ekleyeceksiniz. Gönder butonuna tıklayın etkinlikler için dinler aşağıda kod parçacığı, yeni oluşturur FriendlyMessage mesajı alanın içeriği ile nesneyi ve veritabanına mesajı iter. push() metodu itilir nesnesinin yoluyla otomatik olarak oluşturulan ID ekler. Bu kimlikler sıralıdır ve yeni mesajların listenin sonuna eklenmesini sağlar.

İçinde gönderme düğmeye tıklama işleyicisi güncelleyin onCreate() içinde yöntemle MainActivity sınıfında. Bu kod, alt kısmında onCreate() zaten yöntem. Güncelleme onClick() aşağıdaki kodu eşleşecek şekilde vücudu:

MainActivity.kt

// Disable the send button when there's no text in the input field
// See MyButtonObserver for details
binding.messageEditText.addTextChangedListener(MyButtonObserver(binding.sendButton))

// When the send button is clicked, send a text message
binding.sendButton.setOnClickListener {
    val friendlyMessage = FriendlyMessage(
        binding.messageEditText.text.toString(),
        getUserName(),
        getPhotoUrl(),
        null /* no image */
    )
    db.reference.child(MESSAGES_CHILD).push().setValue(friendlyMessage)
    binding.messageEditText.setText("")
}

Resim mesajı göndermeyi uygula

Bu bölümde, uygulama kullanıcılarının resimli mesajlar göndermesi için yetenek ekleyeceksiniz. Bir görüntü mesajı oluşturma şu adımlarla yapılır:

  • Fotoğraf seç
  • Görüntü seçimini işle
  • Gerçek Zamanlı Veritabanına geçici görüntü mesajı yazın
  • Seçili resmi yüklemeye başla
  • Yükleme tamamlandıktan sonra resim mesajı URL'sini yüklenen resmin URL'sine güncelleyin

Fotoğraf seç

Bu codelab, görüntü eklemek için Firebase için Cloud Storage'ı kullanır. Cloud Storage, uygulamanızın ikili verilerini depolamak için iyi bir yerdir.

Görüntü seçimini yapın ve geçici mesaj yazın

Kullanıcı bir resim seçtikten sonra, görüntü seçimi Intent başlatılır. Bu daha önce kod sonunda uygulanan onCreate() yöntemi. Tamamlandığında bu aramaları MainActivity sitesindeki onImageSelected() metodu. Aşağıdaki kod parçasını kullanarak, veri tabanına geçici bir görsel url'si ile görselin yüklendiğini belirten bir mesaj yazacaksınız.

MainActivity.kt

private fun onImageSelected(uri: Uri) {
    Log.d(TAG, "Uri: $uri")
    val user = auth.currentUser
    val tempMessage = FriendlyMessage(null, getUserName(), getPhotoUrl(), LOADING_IMAGE_URL)
    db.reference
            .child(MESSAGES_CHILD)
            .push()
            .setValue(
                    tempMessage,
                    DatabaseReference.CompletionListener { databaseError, databaseReference ->
                        if (databaseError != null) {
                            Log.w(
                                    TAG, "Unable to write message to database.",
                                    databaseError.toException()
                            )
                            return@CompletionListener
                        }

                        // Build a StorageReference and then upload the file
                        val key = databaseReference.key
                        val storageReference = Firebase.storage
                                .getReference(user!!.uid)
                                .child(key!!)
                                .child(uri.lastPathSegment!!)
                        putImageInStorage(storageReference, uri, key)
                    })
}

Resim yükle ve mesajı güncelle

Yöntemi ekleyin putImageInStorage() için MainActivity . Denir onImageSelected() seçilen görüntünün yüklemeyi başlatmak için. Yükleme tamamlandığında, uygun resmi kullanmak için mesajı güncelleyeceksiniz.

MainActivity.kt

private fun putImageInStorage(storageReference: StorageReference, uri: Uri, key: String?) {
    // First upload the image to Cloud Storage
    storageReference.putFile(uri)
        .addOnSuccessListener(
            this
        ) { taskSnapshot -> // After the image loads, get a public downloadUrl for the image
            // and add it to the message.
            taskSnapshot.metadata!!.reference!!.downloadUrl
                .addOnSuccessListener { uri ->
                    val friendlyMessage =
                        FriendlyMessage(null, getUserName(), getPhotoUrl(), uri.toString())
                    db.reference
                        .child(MESSAGES_CHILD)
                        .child(key!!)
                        .setValue(friendlyMessage)
                }
        }
        .addOnFailureListener(this) { e ->
            Log.w(
                TAG,
                "Image upload task was unsuccessful.",
                e
            )
        }
}

Mesaj göndermeyi test et

  1. Android Studio'da,uygulamak Çalıştır butonuna basın.
  2. Android Emülatörünüzde bir mesaj girin ve gönder düğmesine dokunun. Yeni mesaj, uygulama kullanıcı arayüzünde ve Firebase Emulator Suite kullanıcı arayüzünde görünmelidir.
  3. Android Emülatöründe, cihazınızdan bir resim seçmek için "+" resmine dokunun. Yeni mesaj, önce bir yer tutucu resimle, ardından resim yükleme tamamlandığında seçilen resimle birlikte görünmelidir. Yeni mesaj, özellikle Realtime Database sekmesinde bir nesne ve Storage sekmesinde bir blob olarak Emulator Suite UI'de de görünür olmalıdır.

9. Tebrikler!

Firebase'i kullanarak gerçek zamanlı bir sohbet uygulaması oluşturdunuz!

ne öğrendin

  • Firebase Kimlik Doğrulaması
  • Firebase Gerçek Zamanlı Veritabanı
  • Firebase için Bulut Depolama

Ardından, Firebase'i kendi Android uygulamanıza eklemek için bu kod laboratuvarında öğrendiklerinizi kullanmayı deneyin! Daha Firebase hakkında bilgi edinmek için ziyaret firebase.google.com .

Gerçek Firebase projesini kurmak ve (yerine bir demo projesi ve sadece taklit kaynakların) gerçek Firebase kaynakların nasıl kullanılacağını öğrenmek istiyorsanız, bir sonraki adıma geçin.

Not: Bir gerçek Firebase projeyi kurmak ve gerçek uygulama oluşturmaya başlamak özellikle, biz geliştirme ve test için Firebase Yerel Emulator Suite kullanmanızı öneririz sonra bile.

10. İsteğe bağlı: Bir Firebase projesi oluşturun ve kurun

Bu adımda, bu codelab ile kullanmak için gerçek bir Firebase projesi ve bir Firebase Android Uygulaması oluşturacaksınız. Uygulamanıza özel Firebase yapılandırmanızı da uygulamanıza ekleyeceksiniz. Son olarak, uygulamanızla kullanmak için gerçek Firebase kaynakları kuracaksınız.

Firebase projesi oluşturun

  1. Tarayıcınızda, gidin Firebase konsoluna .
  2. Seç Ekle projesi.
  3. Bir proje adı seçin veya girin. İstediğiniz ismi kullanabilirsiniz.
  4. Bu kod laboratuvarı için Google Analytics'e ihtiyacınız yoktur, dolayısıyla projeniz için etkinleştirmeyi atlayabilirsiniz.
  5. Proje oluşturma tıklayın. Projeniz hazır olduğunda Devam tıklayın.

Android projenize Firebase ekleyin

Bu adıma başlamadan önce uygulamanızın SHA1 karmasını alın. Yerel aşağıdaki komutu çalıştırın build-android-start sizin ayıklama anahtarının SHA1 belirlemek için dizine:

./gradlew signingReport

Store: /Users/<username>/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A5:88:41:04:8F:06:59:6A:AE:33:76:87:AA:AD:19:23
SHA1: A7:89:F5:06:A8:07:A1:22:EC:90:6A:A6:EA:C3:D4:8B:3A:30:AB:18
SHA-256: 05:A2:2A:35:EE:F2:51:23:72:4D:72:67:A5:6A:8A:58:22:2C:00:A6:AB:F6:45:D5:A1:82:D8:90:A4:69:C8:FE
Valid until: Wednesday, August 10, 2044

Yukarıdaki gibi bir çıktı görmelisiniz. Önemli çizgidir SHA1 karması. Eğer SHA1 bulmak için yapamıyorsanız, bkz bu sayfayı daha fazla bilgi için.

Firebase konsoluna geri dönün ve Android projenizi Firebase projenize kaydetmek için şu adımları izleyin:

  1. Yeni projenizin genel bakış ekranından, kurulum iş akışını başlatmak için Android simgesine tıklayın: android uygulaması ekle
  2. Bir sonraki ekranda girmek com.google.firebase.codelab.friendlychat uygulamanız için bir paket adıyla.
  3. Kayıt App, sonra Firebase yapılandırma dosyasını indirmek için İndir google-services.json tıklayın tıklayın.
  4. Kopya google-services.json dosyayı app , Android projesinin dizinine.
  5. (Onlar zaten sizin için yapmış oldum Konsolun kurulum iş akışında gösterilen sonraki adımları atla build-android-start projesi).
  6. Projenizi Gradle dosyalarıyla senkronize ederek tüm bağımlılıkların uygulamanız için kullanılabilir olduğundan emin olun. Android Studio araç çubuğundan, Dosya> Gradle Files ile senkronize projesi seçin.

Firebase Kimlik Doğrulamasını Yapılandırın

Uygulamanızın kullanıcılarınız adına Firebase Authentication API'lerine erişebilmesi için önce Firebase Authentication'ı ve uygulamanızda kullanmak istediğiniz oturum açma sağlayıcılarını etkinleştirmeniz gerekir.

  1. In Firebase konsolunun , soldaki gezinti panelinden kimlik doğrulaması seçin.
  2. Oturum açma yöntemi sekmesi seçin.
  3. Daha sonra etkin (mavi) için geçiş anahtarı, E-posta / Şifre tıklayın.
  4. Daha sonra etkin (mavi) için geçiş anahtarı, Google'ı tıklayın ve bir proje destek e ayarlayın.

Bu kod laboratuvarında daha sonra "CONFIGURATION_NOT_FOUND" mesajıyla hata alırsanız, bu adıma geri dönün ve çalışmanızı iki kez kontrol edin.

Gerçek Zamanlı Veritabanını Yapılandır

Bu codelab'deki uygulama, sohbet mesajlarını Firebase Realtime Database'de saklar. Bu bölümde, bir veritabanı oluşturacağız ve güvenliğini Firebase Güvenlik Kuralları adlı bir JSON yapılandırma dili aracılığıyla yapılandıracağız.

  1. In Firebase konsolunun , soldaki gezinti panelinden Gerçek Zamanlı Veritabanı seçin.
  2. Tıklayın Yeni Gerçek Zamanlı Veri Tabanı örneğini oluşturmak için Veritabanı oluşturun. İstendiğinde, seçmek us-central1 bölgesini, ardından İleri'yi tıklayın.
  3. Güvenlik kuralları hakkında sorulduğunda, kilitli modunu seçin, ardından Etkinleştir'i tıklatın.
  4. : Veritabanı örneği oluşturulduktan sonra, aşağıdaki ile kuralları yapılandırmasını güncelleştirmek, Kurallar sekmesini seçin
     {
       "rules": {
         "messages": {
           ".read": "auth.uid != null",
           ".write": "auth.uid != null"
         }
       }
     }
    

Güvenlik Kuralları işi ( "auth" değişkeni belgelere dahil) konusunda daha fazla bilgi için bkz Gerçek Zamanlı Veri Tabanı güvenlik belgelerine .

Firebase için Cloud Storage'ı yapılandırın

  1. In Firebase konsolunun , soldaki gezinti panelinden Depolama seçin.
  2. Projeniz için Bulut Depolama etkinleştirmek için Başlayın tıklayın.
  3. Önerilen varsayılanları kullanarak paketinizi kurmak için iletişim kutusundaki adımları izleyin.

Firebase kaynaklarına bağlanın

Bu codelab önceki bir adımda, almak için şunları da ekledi MainActivity.kt . Bu koşullu blok, Android projenizi Firebase Emulator Suite'e bağladı.

// REMOVE OR DISABLE THIS
if (BuildConfig.DEBUG) {
    Firebase.database.useEmulator("10.0.2.2", 9000)
    Firebase.auth.useEmulator("10.0.2.2", 9099)
    Firebase.storage.useEmulator("10.0.2.2", 9199)
}

Eğer yeni gerçek Firebase proje ve gerçek Firebase kaynaklarına uygulamanızı bağlamak istiyorsanız, ya bu bloğu kaldırmak veya böylece sürüm modunda uygulamanızı çalıştırabilirsiniz BuildConfig.DEBUG olduğu false .