Firebase Realtime database 생성과 연동 방법

2024. 5. 21. 01:56Mobile Programming

회고

지난 포스팅에서 Firebase와 Android 앱을 연동하는 방법을 정리하였다. 이번에는 Firebase의 Realtime database 생성 방법에 대해 정리할 것이다.

 

Realtime Database는 무엇일까

  • Firebase Realtime Database는 클라우드 호스팅 데이터베이스이다. 데이터는 JSON으로 저장되며, 연결된 모든 클라이언트에 실시간으로 동기화된다. 크로스 플랫폼 앱을 개발할 때, 모든 클라이언트가 하나의 실시간 데이터베이스 인스턴스를 공유하고, 자동 업데이트로 최신 데이터를 수신한다.
  • Realtime Database는 NoSQL 데이터베이스로서 최적화 방식과 기능성이 RDBMS와 다르다.
  • Realtime Database API는 작업 실행 속도를 위주로 설계되었다.

 

Realtime Database 생성

Firebase 콘솔의 네비게이션 바에서 빌드 > Realtime Database > 데이터베이스 만들기를 클릭한다. 데이터베이스 위치와 보안 규칙을 설정한다. 나는 위치 후보 중 한국에서 가까운 싱가포르를 선택했고, 보안 규칙에서는 테스트 모드 말고 잠금 모드를 선택했다. 데이터베이스 생성 후 보안 규칙 수정이 가능하며, 나는 사용 중에만 read, write 권한을 true로 바꾸어 사용하기로 했다.

 

google-services.json 파일 재 다운로드 및 붙여넣기

지난 포스팅에서 Firebase를 연동할 때, google-services.json 파일을 다운 받고 안드로이드 스튜디오의 앱 수준 루트 디렉토리에 붙여넣기 했다. 데이터베이스 생성 후에는 json 파일에 firebase_url에 대한 정보가 추가되므로, 반드시 한 번 더 다운받고 붙여넣는 과정을 진행해주어야 한다. 프로젝트 설정 페이지에서 json 파일을 다시 다운받을 수 있다.

 

Dependency 추가

  • 앱 수준 build.gradle.kts 파일
dependencies {
    // ...
    // Connect to Firebase realtime database
    implementation("com.google.firebase:firebase-database-ktx:21.0.0")
    // ...
}

 

Firebase 연결 확인 코드

MainActivity.kt에 Firebase Realtime Database와 Android 앱에 잘 연결되었는지 테스트하는 코드 3줄을 작성하고, Firebase 콘솔에서 연결 여부를 확인할 수 있다.

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            KonkukClubTheme {
                // A surface container using the 'background' color from the theme
                Surface(
                    modifier = Modifier.fillMaxSize(),
                    color = MaterialTheme.colorScheme.background
                ) {
                    val database = Firebase.database
                    val myRef = database.getReference("message")
                    myRef.setValue("Success")
                }
            }
        }
    }
}

 

 

*참고 사이트

https://soopeach.tistory.com/78