Firebase Android Codelab - ساخت گپ دوستانه

عکس صفحه

تصویر: در حال کار برنامه چت دوستانه.

به كد كتاب Friendly Chat خوش آمدید. در این Codelab ، شما یاد خواهید گرفت که چگونه از پلت فرم Firebase برای ایجاد برنامه چت در Android استفاده کنید.

آنچه یاد خواهید گرفت

  • نحوه استفاده از احراز هویت Firebase برای ورود به سیستم به کاربران.
  • نحوه همگام سازی داده ها با استفاده از پایگاه داده Firebase Realtime.
  • نحوه ذخیره فایل های باینری در Cloud Storage for Firebase.
  • نحوه استفاده از Firebase Local Emulator Suite برای توسعه یک برنامه Android با Firebase.

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

  • Android Studio نسخه 4.2+.
  • شبیه ساز Android با Android نسخه 5.0+.
  • جاوا 7 یا بالاتر. برای نصب جاوا از این دستورالعمل ها استفاده کنید. برای بررسی نسخه خود ، java -version اجرا کنید.
  • آشنایی با زبان برنامه نویسی کوتلین.

مخزن را کلون کنید

مخزن GitHub را از خط فرمان شبیه سازی کنید:

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

وارد کردن به Android Studio

در Android Studio ، File > Open را انتخاب کنید ، سپس فهرست build-android-start انتخاب کنید ( پوشه_ android_studio ) از دایرکتوری که کد کد را بارگیری کردید.

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

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

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

ساخت

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

برای اجرای Firebase Emulator Suite ، باید Firebase CLI را نصب و استفاده کنید.

CLI را نصب کنید

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

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

npm install -g firebase-tools@latest

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

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

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

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

firebase --version

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

در ترمینال خود ، دستور زیر را از ریشه codelab-friendlychat-android محلی- 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.

برای مشاهده UI Firebase Emulator Suite به مرورگر وب خود به http: // localhost: 4000 بروید:

خانه شبیه ساز مجموعه UI

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

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

برای اینکه برنامه Android شما به Firebase متصل شود ، باید یک فایل google-services.json در داخل پوشه app پروژه Android خود اضافه کنید. برای اهداف این Codelab ، ما یک فایل JSON ساختگی ارائه داده ایم که به شما امکان می دهد به Firebase Emulator Suite متصل شوید.

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

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

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

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

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

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

برنامه باید از Android Emulator شما راه اندازی شود. در این مرحله ، باید یک لیست پیام خالی مشاهده کنید ، و ارسال و دریافت پیام کار نمی کند. در مرحله بعدی این Codelab ، کاربران را احراز هویت می کنید تا بتوانند از Chat Friendly استفاده کنند.

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

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

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

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

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

MainActivity.kt

// Firebase instance variables
private lateinit var auth: FirebaseAuth

حال بیایید MainActivity تغییر دهیم تا هر زمان که کاربر برنامه را باز کرد و تأیید اعتبار نداشت ، به صفحه ورود به سیستم ارسال شود. بعد از اینکه binding به نمای متصل شد ، موارد زیر را به روش onCreate() اضافه کنید:

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() پیاده سازی کنید تا اطلاعات مناسب مربوط به کاربر معتبر Firebase را که در حال حاضر تأیید شده است ، بازگردانید:

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 باز کنید. در اینجا از یک دکمه ورود به سیستم ساده برای شروع تأیید اعتبار استفاده می شود. در این بخش ، از FirebaseUI برای پیاده سازی منطق ورود به سیستم استفاده خواهید کرد.

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

SignInActivity.kt

// Firebase instance variables
private lateinit var auth: FirebaseAuth

سپس ، روش onCreate() ویرایش کنید تا Firebase را به همان روشی که در 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 فقط در چند تماس متد و بدون نیاز به مدیریت تنظیمات سمت سرور پیاده سازی کرده اید.

کار خود را آزمایش کنید

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

پس از ورود به سیستم ، Firebase Emulator Suite UI را در مرورگر خود باز کنید ، سپس روی برگه احراز هویت کلیک کنید تا اولین حساب کاربری وارد شده را مشاهده کنید.

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

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

  1. در UI Firebase Emulator Suite ، زبانه Realtime Database را انتخاب کنید.
  2. کشیدن و رها کردن initial_messages.json فایل از کپی محلی شما مخزن codelab را به بیننده داده می شود.

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

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

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

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

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

MainActivity.kt

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

روش MainActivity onCreate() در زیر نظر تغییر دهید // Initialize Realtime Database and FirebaseRecyclerAdapter با کد تعریف شده در زیر ، // Initialize Realtime Database and FirebaseRecyclerAdapter را شروع کنید. این کد تمام پیام های موجود را از پایگاه داده Realtime اضافه می کند و سپس ورودی های کودک جدید را در مسیر messages در پایگاه داده Firebase Realtime شما گوش می دهد. این یک عنصر جدید به 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 برگردید ، گوش دادن به روزرسانی ها را از پایگاه داده Firebase Realtime شروع و متوقف کنید. روش های 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 Emulator Suite ، به برگه Realtime Database برگردید ، سپس به صورت دستی یک پیام جدید اضافه کنید. تأیید کنید که پیام در برنامه Android شما نشان داده می شود:

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

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

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

شنونده کلیک دکمه ارسال را در روش 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("")
}

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

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

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

تصویر را انتخاب کنید

برای افزودن تصاویر ، این codelab از Cloud Storage for 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. در Android Studio ، روی کلیک کنید اجرا کردن دکمه اجرا
  2. در Android Emulator خود ، پیامی را وارد کنید ، سپس روی دکمه ارسال ضربه بزنید. پیام جدید باید در رابط کاربر برنامه و در رابط کاربری Firebase Emulator Suite قابل مشاهده باشد.
  3. در شبیه ساز Android ، روی تصویر "+" ضربه بزنید تا تصویری از دستگاه خود انتخاب شود. پیام جدید باید ابتدا با یک تصویر نگهدارنده مکان ، و سپس با تصویر انتخاب شده پس از اتمام بارگذاری تصویر قابل مشاهده باشد. پیام جدید همچنین باید در رابط کاربری Emulator Suite ، به طور خاص به عنوان یک شی در برگه پایگاه داده Realtime و به عنوان یک لکه در تب Storage قابل مشاهده باشد.

شما فقط با استفاده از Firebase یک برنامه چت در زمان واقعی ساخته اید!

آنچه آموختید

  • احراز هویت Firebase
  • پایگاه داده Firebase در زمان واقعی
  • Cloud Storage for Firebase

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

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

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

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

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

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

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

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

./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 های پروژه Android خود کپی کنید.
  5. پرش گام های بعدی نشان داده شده در گردش کار راه اندازی کنسول (آنها قبلا برای شما در انجام شده است build-android-start پروژه).
  6. با همگام سازی پروژه خود با پرونده های Gradle اطمینان حاصل کنید که تمام وابستگی ها در برنامه شما وجود دارد. از نوار ابزار Android Studio ، File > Sync Project with Gradle Files را انتخاب کنید .

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

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

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

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

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

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

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

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

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

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

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

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

// 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 واقعی و منابع واقعی Firebase آن متصل کنید ، می توانید این بلوک را حذف کنید یا برنامه خود را در حالت انتشار اجرا کنید تا BuildConfig.DEBUG false .