Android Studio/ReviewMate

[Android Studio/Kotlin] MyApplication 설정

kangchaewon 2023. 12. 6. 01:06
package com.example.reviewmate

import androidx.multidex.MultiDexApplication
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.ktx.auth
import com.google.firebase.ktx.Firebase

class MyApplication: MultiDexApplication() {
    companion object {
        lateinit var auth: FirebaseAuth // 어플리케이션이 이곡저곳에서 쉽게 이용하도록 어플리케이션에서 사용하고자
        var email: String? = null // 이후에 설정할 값 유저의 이메일 값
        // 인증여부 확인 함수
        fun checkAuth(): Boolean {
            var currentUser = auth.currentUser

            return currentUser?.let {
                email = currentUser.email
                currentUser.isEmailVerified
            } ?: let {
                false
            }
        }
    }

    override fun onCreate() {
        super.onCreate()
        auth = Firebase.auth
    }
}

주어진 코드를 보면 MyApplication 클래스가 Firebase 인증을 사용하기 위한 설정을 담당하고 있습니다. MyApplication 클래스는 MultiDexApplication 클래스를 상속하고 있으며, 앱이 시작될 때 Firebase 인증 객체를 초기화하고 어플리케이션 전역에서 이를 사용할 수 있도록 하고 있습니다.

MyApplication 클래스의 역할은 다음과 같습니다:

  1. auth 변수: Firebase 인증 객체를 저장하기 위한 auth 변수가 선언되어 있습니다. companion object를 통해 클래스의 인스턴스를 생성하지 않고도 MyApplication.auth 형태로 어디서든지 접근하여 인증 객체를 사용할 수 있습니다.
  2. email 변수: 현재 로그인한 사용자의 이메일 값을 저장하기 위한 email 변수가 선언되어 있습니다. 이후 인증 상태를 확인하는 함수에서 로그인 여부와 함께 사용자의 이메일 값을 설정하고 사용할 수 있습니다.
  3. checkAuth() 함수: 인증 여부를 확인하는 함수로, 현재 로그인된 사용자를 가져오고 사용자가 이메일 인증을 완료했는지 확인합니다.
  4. onCreate() 메서드: 앱이 시작될 때 호출되며, Firebase 인증 객체를 초기화합니다. Firebase 인증을 사용하기 위해서는 반드시 초기화되어야 합니다. 따라서 onCreate() 메서드에서 Firebase.auth를 auth 변수에 할당합니다.

이 코드가 Firebase 인증을 사용하는 앱에서 인증 상태를 확인하고 이메일 값을 가져오는 기능을 구현하는데 도움이 될 것입니다. 단, 앱의 다른 곳에서 MyApplication.checkAuth()를 호출하기 전에 MyApplication 클래스가 앱의 AndroidManifest.xml 파일에 등록되어야 합니다. AndroidManifest.xml에서 다음과 같이 MyApplication 클래스를 등록해주어야 합니다:

<application
    android:name=".MyApplication"
    <!-- 기타 설정 -->
    ...
</application>

이제 앱 전체에서 MyApplication.auth를 통해 Firebase 인증 객체를 사용할 수 있고, MyApplication.checkAuth()를 호출하여 인증 여부를 확인할 수 있게 됩니다.