Firebase Android Codelab - چت دوستانه بسازید

1. بررسی اجمالی

اسکرین شات

تصویر: برنامه Working Friendly Chat.

به صفحه کد چت دوستانه خوش آمدید. در این کد لبه، یاد خواهید گرفت که چگونه از پلتفرم Firebase برای ایجاد یک برنامه چت در اندروید استفاده کنید.

چیزی که یاد خواهید گرفت

  • نحوه استفاده از Firebase Authentication برای اجازه ورود کاربران به سیستم.
  • نحوه همگام سازی داده ها با استفاده از پایگاه داده بیدرنگ Firebase.
  • نحوه ذخیره فایل های باینری در Cloud Storage برای Firebase.
  • نحوه استفاده از مجموعه شبیه ساز محلی Firebase برای توسعه یک برنامه اندروید با Firebase.

آنچه شما نیاز دارید

2. کد نمونه را دریافت کنید

مخزن را شبیه سازی کنید

مخزن GitHub را از خط فرمان کلون کنید:

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

وارد کردن به اندروید استودیو

در Android Studio، به مسیر File> باز، سپس انتخاب کنید build-android-start دایرکتوری ( android_studio_folder ) از دایرکتوری که نمونه کد را دانلود کرده اید.

شما هم اکنون می باید داشته build-android-start پروژه باز در Android Studio. اگر شما یک هشداری در مورد یک دید google-services.json فایل از دست رفته، نگران نباشید. در مرحله بعد اضافه خواهد شد.

وابستگی ها را بررسی کنید

در این کد لبه همه وابستگی‌هایی که نیاز دارید قبلاً برای شما اضافه شده‌اند، اما مهم است که بدانید چگونه Firebase SDK را به برنامه خود اضافه کنید:

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'
    }
}

app/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 را نصب کنید

به منظور اجرای فایربیس شبیه ساز سوئیت ، شما نیاز به نصب و استفاده از فایربیس CLI .

CLI را نصب کنید

گزینه 1 - نصب با npm

اگر قبلاً Node.js و npm را روی دستگاه خود نصب کرده اید، می توانید CLI را با دستور زیر نصب کنید:

npm install -g firebase-tools@latest

گزینه 2 - باینری مستقل را نصب کنید

اگر شما از Node.js / NPM نیست و یا شما جدید برای توسعه برنامه هستید، شما می توانید به عنوان یک CLI باینری مستقل پس از نصب دستورالعمل ها را برای پلت فرم خود را اینجا .

نصب را بررسی کنید

هنگامی که شما فایربیس CLI نصب شده است، دستور زیر را اجرا کنید تا مطمئن شوید شما از نسخه 9.11.0 یا بالاتر:

firebase --version

4. به مجموعه شبیه ساز Firebase متصل شوید

شبیه سازها را راه اندازی کنید

در ترمینال خود را، دستور زیر را اجرا را از ریشه از محلی خود codelab-friendlychat-android دایرکتوری:

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

شما باید برخی از سیاهههای مربوط به این را ببینید. مقادیر پورت در تعریف شد firebase.json فایل، که در کد نمونه شبیه سازی شده گنجانده شده است.

$ 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.

هدایت به آدرس http: // localhost را: 4،000 در مرورگر وب خود را برای مشاهده فایربیس شبیه ساز سوئیت UI:

صفحه اصلی رابط کاربری Emulator Suite

ترک emulators:start دستور در حال اجرا برای بقیه codelab.

برنامه خود را وصل کنید

در Android Studio، باز MainActivity.kt ، سپس کد زیر را در داخل اضافه onCreate روش:

// 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. برنامه استارتر را اجرا کنید

google-services.json را اضافه کنید

به منظور برنامه آندروید خود را برای اتصال به فایربیس، شما باید یک اضافه google-services.json فایل در داخل app پوشه پروژه آندروید خود را. برای اهداف این نرم افزار کد، ما یک فایل JSON ساختگی ارائه کرده ایم که به شما امکان می دهد به مجموعه شبیه ساز Firebase متصل شوید.

کپی mock-google-services.json فایل را به build-android-start/app فولدر به عنوان google-services.json :

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

در مرحله آخر این کد لبه، یاد خواهید گرفت که چگونه یک پروژه Firebase واقعی و برنامه Firebase Android ایجاد کنید تا بتوانید این فایل JSON ساختگی را با پیکربندی خود جایگزین کنید.

برنامه را اجرا کنید

اکنون که پروژه را به Android Studio وارد کرده اید و یک فایل JSON پیکربندی Firebase را اضافه کرده اید، برای اولین بار آماده اجرای برنامه هستید.

  1. شبیه ساز اندروید خود را راه اندازی کنید.
  2. در Android Studio، Run را کلیک کنید ( اجرا کردن ) در نوار ابزار.

برنامه باید در شبیه ساز اندروید شما راه اندازی شود. در این مرحله باید یک لیست پیام خالی را مشاهده کنید و ارسال و دریافت پیام کار نخواهد کرد. در مرحله بعدی این کد لبه، کاربران را احراز هویت می‌کنید تا بتوانند از چت دوستانه استفاده کنند.

6. Authentication را فعال کنید

این برنامه از پایگاه داده بیدرنگ Firebase برای ذخیره همه پیام های چت استفاده می کند. با این حال، قبل از اینکه داده‌ها را اضافه کنیم، باید مطمئن شویم که برنامه امن است و فقط کاربران تأیید شده می‌توانند پیام ارسال کنند. در این مرحله، احراز هویت Firebase را فعال کرده و قوانین امنیت پایگاه داده Realtime را پیکربندی می‌کنیم.

قابلیت ورود به سیستم اولیه را اضافه کنید

در مرحله بعد، تعدادی کد اولیه احراز هویت Firebase را به برنامه اضافه می کنیم تا کاربران را شناسایی کرده و صفحه ورود به سیستم را پیاده سازی کنیم.

کاربر فعلی را بررسی کنید

اول متغیر نمونه زیر را به اضافه MainActivity.kt کلاس:

MainActivity.kt

// Firebase instance variables
private lateinit var auth: FirebaseAuth

حالا اجازه دهید تغییر MainActivity به ارسال کاربر به صفحه ورود به سیستم هر زمان که آنها برنامه را باز کنید و غیرمجاز است. اضافه کردن زیر را به onCreate() روش پس از binding به این نظر متصل:

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
}

ما همچنین می خواهم به بررسی در صورتی که کاربر در طول امضا 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
    }
}

سپس پیاده سازی getUserPhotoUrl() و getUserName() روش برای بازگشت به اطلاعات مناسب در مورد کاربر فایربیس حال حاضر تصدیق:

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
}

سپس پیاده سازی signOut() روش که مسئولیت رسیدگی به خروج از سیستم را فشار دهید:

MainActivity.kt

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

اکنون ما تمام منطق را در اختیار داریم تا در صورت لزوم کاربر را به صفحه ورود به سیستم بفرستیم. در مرحله بعد باید صفحه ورود به سیستم را برای احراز هویت صحیح کاربران پیاده سازی کنیم.

صفحه ورود به سیستم را اجرا کنید

باز کردن فایل SignInActivity.kt . در اینجا یک دکمه Sign-In ساده برای شروع احراز هویت استفاده می شود. در این بخش از FirebaseUI برای پیاده سازی منطق ورود به سیستم استفاده خواهید کرد.

اضافه کردن یک متغیر نمونه تایید در SignInActivity کلاس تحت // Firebase instance variables نظر:

SignInActivity.kt

// Firebase instance variables
private lateinit var auth: FirebaseAuth

سپس، ویرایش onCreate() روش برای مقداردهی اولیه فایربیس در به همان شیوه شما در انجام MainActivity :

SignInActivity.kt

// Initialize FirebaseAuth
auth = Firebase.auth

اضافه کردن یک ActivityResultLauncher زمینه به SignInActivity :

SignInActivity.kt

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

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

در مرحله بعد، ویرایش onStart() روش به پا زدن کردن نشانه FirebaseUI در جریان:

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()
    }
}

بعد، اجرای onSignInResult روش برای رسیدگی به نشانه در نتیجه. اگر نتیجه از ورود به سیستم موفق بود، در ادامه به 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)
        }
    }
}

خودشه! شما احراز هویت را با FirebaseUI تنها در چند فراخوانی متد و بدون نیاز به مدیریت پیکربندی سمت سرور پیاده‌سازی کرده‌اید.

کار خود را تست کنید

برنامه را روی شبیه ساز اندروید خود اجرا کنید. شما باید فوراً به صفحه ورود به سیستم فرستاده شوید. ضربه بزنید ورود با دکمه ایمیل، پس از آن یک حساب کاربری ایجاد کنید. اگر همه چیز به درستی اجرا شود، باید به صفحه پیام ارسال شوید.

پس از ورود به سیستم، باز کردن فایربیس شبیه ساز سوئیت UI در مرورگر خود، پس از آن زبانه اعتبار کلیک کنید برای دیدن اولین بار از این امضا در حساب کاربری.

7. پیام ها را بخوانید

در این مرحله عملکردی برای خواندن و نمایش پیام های ذخیره شده در پایگاه داده Realtime اضافه می کنیم.

نمونه پیام ها را وارد کنید

  1. در فایربیس شبیه ساز سوئیت UI، برگه پایگاه بیدرنگ انتخاب کنید.
  2. کشیدن و رها کردن initial_messages.json فایل از کپی محلی شما مخزن codelab را به بیننده داده می شود.

شما هم اکنون می باید چند پیام تحت دارند messages گره از پایگاه داده است.

داده ها را بخوانید

همگام سازی پیام ها

در این بخش ما کدی را اضافه می کنیم که پیام های اضافه شده جدید را به UI برنامه همگام می کند:

  • راه اندازی پایگاه داده بیدرنگ Firebase و افزودن شنونده برای مدیریت تغییرات ایجاد شده در داده ها.
  • به روز رسانی RecyclerView آداپتور بنابراین پیام های جدید نشان داده خواهد شد.
  • اضافه کردن متغیرهای پایگاه مثال با دیگر متغیرهای نمونه Firebase خود در MainActivity کلاس:

MainActivity.kt

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

اصلاح MainActivity د خود را onCreate() روش تحت نظر // Initialize Realtime Database and FirebaseRecyclerAdapter با کد تعریف شده است. این کد می افزاید: تمام پیام های موجود از پایگاه بیدرنگ و سپس گوش برای ورودی های جدید کودک زیر messages مسیر در خود پایگاه فایربیس بیدرنگ. برای هر پیام یک عنصر جدید به UI اضافه می کند:

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)
)

بعدی در FriendlyMessageAdapter.kt کلاس پیاده سازی bind() متد در کلاس درونی 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)
        }
    }
    ...
}

ما همچنین به پیام های صفحه نمایش که تصاویر نیاز دارید، بنابراین نیز پیاده سازی bind() متد در کلاس درونی 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)
        }
    }
}

در نهایت، در MainActivity ، شروع و توقف گوش دادن برای به روز رسانی از پایگاه فایربیس بیدرنگ. به روز رسانی onPause() و onResume() روش در MainActivity به عنوان زیر نشان داده شده:

MainActivity.kt

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

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

همگام سازی پیام ها را آزمایش کنید

  1. Run کلیک کنید ( اجرا کردن ).
  2. در شبیه ساز سوئیت UI، بازگشت به بیدرنگ تب پایگاه، سپس به صورت دستی اضافه کردن یک پیام جدید است. تأیید کنید که پیام در برنامه Android شما نشان داده می شود:

تبریک می‌گوییم، شما فقط یک پایگاه داده بیدرنگ به برنامه خود اضافه کردید!

8. ارسال پیام

پیاده سازی ارسال پیامک

در این قسمت امکان ارسال پیامک را برای کاربران اپلیکیشن اضافه می کنید. قطعه کد زیر گوش برای رویدادهای کلیک بر روی دکمه ارسال، ایجاد یک جدید FriendlyMessage شی با محتویات قسمت پیام، و هل پیام به پایگاه داده. push() روش یک ID به صورت خودکار تولید به مسیر شی تحت فشار قرار دادند اضافه می کند. این شناسه ها متوالی هستند که تضمین می کند که پیام های جدید به انتهای لیست اضافه می شوند.

به روز رسانی شنونده کلیک بر روی دکمه ارسال در onCreate() روش در MainActivity کلاس. این کد در پایین از onCreate() روش در حال حاضر. به روز رسانی onClick() بدن برای مطابقت با کد زیر:

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("")
}

پیاده سازی ارسال پیام تصویری

در این قسمت امکان ارسال پیام تصویری را برای کاربران اپلیکیشن اضافه می کنید. ایجاد پیام تصویری با این مراحل انجام می شود:

  • تصویر را انتخاب کنید
  • انتخاب تصویر را کنترل کنید
  • پیام تصویری موقت را در پایگاه داده بیدرنگ بنویسید
  • شروع به آپلود تصویر انتخابی کنید
  • پس از اتمام آپلود، URL پیام تصویر را به تصویر آپلود شده به روز کنید

Image را انتخاب کنید

برای افزودن تصاویر، این Codelab از Cloud Storage برای Firebase استفاده می کند. Cloud Storage مکان خوبی برای ذخیره داده های باینری برنامه شما است.

انتخاب تصویر را مدیریت کنید و پیام موقت بنویسید

هنگامی که کاربر یک تصویر انتخاب شده است، انتخاب تصویر Intent راه اندازی شده است. این در حال حاضر در کد در پایان اجرا onCreate() روش. هنگامی که به پایان رسید آن را فراخوانی MainActivity را onImageSelected() روش. با استفاده از قطعه کد زیر، پیامی با یک URL تصویر موقت به پایگاه داده می نویسید که نشان می دهد تصویر در حال آپلود است.

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)
                    })
}

آپلود تصویر و پیام به روز رسانی

اضافه کردن به روش putImageInStorage() به MainActivity . این است که در نام onImageSelected() برای شروع آپلود تصویر انتخاب شده است. پس از تکمیل آپلود، پیام را برای استفاده از تصویر مناسب به روز می کنید.

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
            )
        }
}

تست ارسال پیام

  1. در اندروید استودیو، روی اجرا کردن روی دکمه اجرای.
  2. در شبیه ساز اندروید خود، پیامی را وارد کنید، سپس روی دکمه ارسال ضربه بزنید. پیام جدید باید در رابط کاربری برنامه و در رابط کاربری Firebase Emulator Suite قابل مشاهده باشد.
  3. در شبیه ساز اندروید، روی تصویر "+" ضربه بزنید تا تصویری از دستگاه خود انتخاب کنید. پیام جدید باید ابتدا با یک تصویر مکان نگهدار و سپس با تصویر انتخاب شده پس از تکمیل آپلود تصویر قابل مشاهده باشد. پیام جدید همچنین باید در رابط کاربری Emulator Suite، به ویژه به عنوان یک شی در تب Realtime Database و به عنوان یک حباب در برگه Storage قابل مشاهده باشد.

9. تبریک!

شما به تازگی یک برنامه چت بلادرنگ با استفاده از Firebase ساخته اید!

چیزی که یاد گرفتی

  • احراز هویت Firebase
  • پایگاه داده بیدرنگ Firebase
  • فضای ذخیره سازی ابری برای Firebase

سپس، سعی کنید از آنچه در این کد لبه یاد گرفته اید استفاده کنید تا Firebase را به برنامه اندروید خود اضافه کنید! برای کسب اطلاعات بیشتر در مورد فایربیس، بازدید firebase.google.com .

اگر می خواهید آموخت که چگونه به راه اندازی یک پروژه فایربیس واقعی و استفاده از منابع فایربیس واقعی (به جای یک پروژه آزمایشی و منابع تنها شبیه سازی)، به مرحله بعدی بروید.

توجه: حتی پس از شما در تنظیم یک پروژه فایربیس واقعی و به ویژه هنگامی که شما برای شروع ساخت یک برنامه واقعی، توصیه می کنیم با استفاده از فایربیس محلی شبیه ساز سوئیت برای توسعه و آزمایش.

10. اختیاری: ایجاد و راه اندازی یک پروژه Firebase

در این مرحله، یک پروژه Firebase واقعی و یک برنامه اندروید Firebase برای استفاده با این کد لبه ایجاد خواهید کرد. همچنین پیکربندی Firebase مخصوص برنامه خود را به برنامه خود اضافه خواهید کرد. و در نهایت، منابع Firebase واقعی را برای استفاده با برنامه خود تنظیم خواهید کرد.

یک پروژه Firebase ایجاد کنید

  1. در مرورگر شما، به رفتن کنسول فایربیس .
  2. انتخاب پروژه اضافه کنید.
  3. نام پروژه را انتخاب یا وارد کنید. شما می توانید از هر نامی که می خواهید استفاده کنید.
  4. شما برای این کد لبه نیازی به Google Analytics ندارید، بنابراین می توانید از فعال کردن آن برای پروژه خود صرف نظر کنید.
  5. کلیک کنید ایجاد پروژه. هنگامی که پروژه خود را آماده است، روی ادامه کلیک کنید.

Firebase را به پروژه اندروید خود اضافه کنید

قبل از شروع این مرحله، هش SHA1 برنامه خود را دریافت کنید. فرمان زیر را اجرا از محلی خود build-android-start دایرکتوری برای تعیین SHA1 کلید اشکال زدایی خود قرار دهید:

./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

شما باید برخی از خروجی ها مانند بالا را ببینید. خط مهم است SHA1 هش. اگر شما قادر به پیدا کردن هش SHA1 خود هستید، ببینید این صفحه برای اطلاعات بیشتر.

به کنسول Firebase برگردید و مراحل زیر را برای ثبت پروژه Android خود در پروژه Firebase دنبال کنید:

  1. از صفحه نمای کلی پروژه جدید خود، روی نماد Android کلیک کنید تا گردش کار راه اندازی راه اندازی شود: اضافه کردن برنامه اندروید
  2. در صفحه بعد، وارد com.google.firebase.codelab.friendlychat مانند نام بسته برای برنامه شما.
  3. کلیک کنید ثبت نام برنامه، سپس کلیک کنید تا دانلود فایل پیکربندی Firebase خود دانلود Google-services.json.
  4. کپی google-services.json فایل را به app دایرکتوری پروژه آندروید خود را.
  5. پرش گام های بعدی نشان داده شده در گردش کار راه اندازی کنسول (آنها قبلا برای شما در انجام شده است build-android-start پروژه).
  6. با همگام‌سازی پروژه خود با فایل‌های Gradle، مطمئن شوید که همه وابستگی‌ها برای برنامه شما در دسترس هستند. از نوار ابزار Studio آندروید، فایل> پروژه همگام سازی با Gradle فایل را انتخاب کنید. شما همچنین ممکن است نیاز به اجرای ساخت / پروژه پاک و ساخت / بازسازی پروژه برای پیکربندی تغییرات را به محل.

احراز هویت Firebase را پیکربندی کنید

قبل از اینکه برنامه شما بتواند از طرف کاربرانتان به API های احراز هویت Firebase دسترسی پیدا کند، باید احراز هویت Firebase و ارائه دهندگان ورود به سیستمی را که می خواهید در برنامه خود استفاده کنید، فعال کنید.

  1. در فایربیس کنسول ، احراز هویت از پانل پیمایش سمت راست انتخاب کنید.
  2. ورود به سیستم در تب روش را انتخاب کنید.
  3. کلیک کنید ایمیل / رمز عبور، سپس سوئیچ را به فعال (آبی).
  4. گوگل کلیک کنید، سپس سوئیچ را به فعال (آبی) و مجموعه ای از یک ایمیل پشتیبانی پروژه.

اگر بعداً در این نسخه کد با پیام "CONFIGURATION_NOT_FOUND" خطایی دریافت کردید، به این مرحله بازگردید و کار خود را دوباره بررسی کنید.

پیکربندی پایگاه داده بیدرنگ

برنامه موجود در این کد لبه پیام های چت را در پایگاه داده بیدرنگ Firebase ذخیره می کند. در این بخش، یک پایگاه داده ایجاد می کنیم و امنیت آن را از طریق یک زبان پیکربندی JSON به نام Firebase Security Rules پیکربندی می کنیم.

  1. در فایربیس کنسول ، انتخاب پایگاه بیدرنگ از پانل ناوبری سمت چپ.
  2. کلیک کنید ایجاد پایگاه برای ایجاد یک بیدرنگ به عنوان مثال پایگاه جدید است. وقتی از شما خواسته ها us-central1 منطقه، پس Next کلیک کنید.
  3. هنگامی که در مورد قوانین امنیتی خواسته شد، را انتخاب کنید حالت قفل شده است، سپس با کلیک فعال کنید.
  4. هنگامی که مثال پایگاه داده ایجاد شده است، به زبانه قوانین، و سپس به روز رسانی پیکربندی قوانین به شرح زیر:
     {
       "rules": {
         "messages": {
           ".read": "auth.uid != null",
           ".write": "auth.uid != null"
         }
       }
     }
    

برای کسب اطلاعات بیشتر در مورد چگونه قوانین امنیتی کار (از جمله مستندات بر روی "تایید" متغیر)، را ببینید مستندات امنیتی پایگاه بیدرنگ .

Cloud Storage را برای Firebase پیکربندی کنید

  1. در فایربیس کنسول ، ذخیره سازی از پانل پیمایش سمت راست انتخاب کنید.
  2. شروع به فعال کردن ذخیره سازی ابر برای پروژه خود را کلیک کنید.
  3. با استفاده از پیش‌فرض‌های پیشنهادی، مراحل موجود در گفتگو را برای تنظیم سطل خود دنبال کنید.

به منابع Firebase متصل شوید

در مرحله قبل از این codelab، شما به شرح زیر به آن اضافه MainActivity.kt . این بلوک شرطی پروژه اندروید شما را به مجموعه Firebase Emulator متصل می کند.

// 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)
}

اگر شما می خواهید برای اتصال برنامه خود را به پروژه جدید واقعی Firebase خود و منابع فایربیس واقعی خود را، شما هم می توانید این بلوک حذف و یا اجرای برنامه را در حالت انتشار به طوری که BuildConfig.DEBUG است false .