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 클래스의 역할은 다음과 같습니다:
- auth 변수: Firebase 인증 객체를 저장하기 위한 auth 변수가 선언되어 있습니다. companion object를 통해 클래스의 인스턴스를 생성하지 않고도 MyApplication.auth 형태로 어디서든지 접근하여 인증 객체를 사용할 수 있습니다.
- email 변수: 현재 로그인한 사용자의 이메일 값을 저장하기 위한 email 변수가 선언되어 있습니다. 이후 인증 상태를 확인하는 함수에서 로그인 여부와 함께 사용자의 이메일 값을 설정하고 사용할 수 있습니다.
- checkAuth() 함수: 인증 여부를 확인하는 함수로, 현재 로그인된 사용자를 가져오고 사용자가 이메일 인증을 완료했는지 확인합니다.
- 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()를 호출하여 인증 여부를 확인할 수 있게 됩니다.
'Android Studio > ReviewMate' 카테고리의 다른 글
| [Android Studio/Kotlin] Adapter사용법 (0) | 2023.12.06 |
|---|---|
| [Android Studio/Kotlin] 로그인 기능 (0) | 2023.12.06 |
| [Android Studio/Kotlin]RatingBar사용법 (0) | 2023.12.06 |
| [Android Studio/Kotlin] Splash화면 만들기 (1) | 2023.12.06 |
| [해결못함]스프링부트 spring boot mysqld연동 안됨.. (1) | 2023.11.29 |