아직 추가하지 않았다면 Android 프로젝트에 Firebase를 추가합니다.
데이터베이스 만들기
Firebase Console의 실시간 데이터베이스 섹션으로 이동합니다. 기존 Firebase 프로젝트를 선택하라는 메시지가 표시됩니다. 데이터베이스 만들기 워크플로를 따릅니다.
Firebase 보안 규칙의 시작 모드를 선택합니다.
- 테스트 모드
모바일과 웹 클라이언트 라이브러리를 시작할 때 유용하지만 모든 사람이 데이터를 읽고 덮어쓸 수 있습니다. 테스트 완료 후 Firebase 실시간 데이터베이스 규칙 이해 섹션을 검토해야 합니다.
웹, Apple 또는 Android SDK를 시작하려면 테스트 모드를 선택하세요.
- 잠금 모드
모바일과 웹 클라이언트의 모든 읽기와 쓰기를 거부합니다. 인증된 애플리케이션 서버에서는 사용자의 데이터베이스에 계속 액세스할 수 있습니다.
데이터베이스의 위치를 선택합니다.
데이터베이스 위치에 따라 새 데이터베이스의 URL이 다음 형식 중 하나로 지정됩니다.
(DATABASE_NAME.firebaseio.com
us-central1
의 데이터베이스) (다른 모든 위치의 데이터베이스)DATABASE_NAME.REGION.firebasedatabase.app
완료를 클릭합니다.
실시간 데이터베이스를 사용 설정하면 Cloud API Manager의 API도 사용 설정됩니다.
앱에 실시간 데이터베이스 SDK 추가
모듈(앱 수준) Gradle 파일(일반적으로<project>/<app-module>/build.gradle
)에서 실시간 데이터베이스 Android 라이브러리의 종속 항목을 추가합니다. 라이브러리 버전 관리를 제어하는 데 Firebase Android BoM을 사용하는 것이 좋습니다.
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:32.1.0') // Add the dependency for the Realtime Database library // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-database-ktx' }
Firebase Android BoM을 사용하면 앱에서 항상 호환되는 Firebase Android 라이브러리 버전만 사용합니다.
(대안) BoM을 사용하지 않고 Firebase 라이브러리 종속 항목을 추가합니다.
Firebase BoM을 사용하지 않도록 선택한 경우에는 종속 항목 줄에 각 Firebase 라이브러리 버전을 지정해야 합니다.
앱에서 여러 Firebase 라이브러리를 사용하는 경우 모든 버전이 호환되도록 BoM을 사용하여 라이브러리 버전을 관리하는 것이 좋습니다.
dependencies { // Add the dependency for the Realtime Database library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-database-ktx:20.2.2' }
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:32.1.0') // Add the dependency for the Realtime Database library // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-database' }
Firebase Android BoM을 사용하면 앱에서 항상 호환되는 Firebase Android 라이브러리 버전만 사용합니다.
(대안) BoM을 사용하지 않고 Firebase 라이브러리 종속 항목을 추가합니다.
Firebase BoM을 사용하지 않도록 선택한 경우에는 종속 항목 줄에 각 Firebase 라이브러리 버전을 지정해야 합니다.
앱에서 여러 Firebase 라이브러리를 사용하는 경우 모든 버전이 호환되도록 BoM을 사용하여 라이브러리 버전을 관리하는 것이 좋습니다.
dependencies { // Add the dependency for the Realtime Database library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-database:20.2.2' }
실시간 데이터베이스 보안 규칙 구성
실시간 데이터베이스가 제공하는 선언적 규칙 언어로 데이터의 구조, 색인 생성 방법, 데이터를 읽고 쓸 수 있는 조건을 정의할 수 있습니다.
데이터베이스에 쓰기
getInstance()
를 사용하여 데이터베이스의 인스턴스를 검색하고 쓰려는 위치를 참조합니다.
Kotlin+KTX
// Write a message to the database val database = Firebase.database val myRef = database.getReference("message") myRef.setValue("Hello, World!")
Java
// Write a message to the database FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference myRef = database.getReference("message"); myRef.setValue("Hello, World!");
이 방법으로 자바 객체를 포함하여 다양한 데이터 유형을 데이터베이스에 저장할 수 있습니다. 객체를 저장하면 getter의 응답이 이 위치의 하위 요소로 저장됩니다.
데이터베이스에서 읽기
실시간으로 앱 데이터를 업데이트하려면 방금 만든 참조에 ValueEventListener
를 추가해야 합니다.
이 클래스의 onDataChange()
메서드는 리스너가 연결될 때 한 번 트리거된 후 하위 항목을 포함하여 데이터가 변경될 때마다 다시 트리거됩니다.
Kotlin+KTX
// Read from the database myRef.addValueEventListener(object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { // This method is called once with the initial value and again // whenever data at this location is updated. val value = dataSnapshot.getValue<String>() Log.d(TAG, "Value is: $value") } override fun onCancelled(error: DatabaseError) { // Failed to read value Log.w(TAG, "Failed to read value.", error.toException()) } })
Java
// Read from the database myRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { // This method is called once with the initial value and again // whenever data at this location is updated. String value = dataSnapshot.getValue(String.class); Log.d(TAG, "Value is: " + value); } @Override public void onCancelled(@NonNull DatabaseError error) { // Failed to read value Log.w(TAG, "Failed to read value.", error.toException()); } });
선택사항: ProGuard 구성
앱에서 ProGuard와 함께 Firebase 실시간 데이터베이스를 사용하는 경우 난독화 후에 모델 객체가 직렬화 및 역직렬화되는 방법을 고려해야 합니다. DataSnapshot.getValue(Class)
또는 DatabaseReference.setValue(Object)
를 사용하여 데이터를 읽고 쓰는 경우 proguard-rules.pro
파일에 다음과 같이 규칙을 추가해야 합니다.
# Add this global rule
-keepattributes Signature
# This rule will properly ProGuard all the model classes in
# the package com.yourcompany.models.
# Modify this rule to fit the structure of your app.
-keepclassmembers class com.yourcompany.models.** {
*;
}
ProGuard와 관련된 질문 또는 문제에 대해 도움이 필요한 경우 Guardsquare 커뮤니티 포럼을 방문하여 전문가의 도움을 받으세요.
출시 준비
앱을 출시하기 전에 우선 출시 체크리스트를 확인하여 앱의 준비 상태를 점검하세요.
내 앱만 데이터베이스에 액세스할 수 있도록 앱 체크를 사용 설정해야 합니다.
다음 단계
- 실시간 데이터베이스의 데이터를 구조화하는 방법
- 여러 데이터베이스 인스턴스에서 데이터 규모 조정
- 데이터 읽기 및 쓰기
- Firebase Console에서 데이터베이스 보기