콘솔로 이동
Cloud Firestore 사용해 보기: Firebase와 Google Cloud Platform의 유연하며 확장 가능한 데이터베이스를 살펴보세요. Cloud Firestore 자세히 알아보기

Android에서 설치 및 설정

Firebase에 앱 연결

  1. Firebase SDK를 설치합니다.
  2. Firebase 콘솔에서 Firebase 프로젝트에 앱을 추가합니다.

앱에 실시간 데이터베이스 추가

앱 수준 build.gradle 파일에 실시간 데이터베이스에 대한 종속 항목을 추가합니다.

  implementation 'com.google.firebase:firebase-database:16.1.0'

실시간 데이터베이스 규칙 구성

실시간 데이터베이스가 제공하는 선언적 규칙 언어로 데이터의 구조, 색인 생성 방법, 데이터를 읽고 쓸 수 있는 조건을 정의할 수 있습니다.

기본적으로 데이터베이스에 대한 읽기 및 쓰기 액세스는 인증된 사용자만 데이터를 읽거나 쓸 수 있도록 제한되어 있습니다. 공개 액세스 규칙을 구성하면 인증을 설정하지 않고 시작할 수 있습니다. 다만 이렇게 하면 앱을 사용하지 않는 사람을 포함하여 모두에게 데이터베이스가 공개되므로 인증을 설정할 때 데이터베이스를 다시 제한해야 합니다.

데이터베이스에 쓰기

getInstance()를 사용하여 데이터베이스의 인스턴스를 검색하고, 쓰려는 위치를 참조합니다.

자바
Android

// Write a message to the database
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");

myRef.setValue("Hello, World!");

Kotlin
Android

// Write a message to the database
val database = FirebaseDatabase.getInstance()
val myRef = database.getReference("message")

myRef.setValue("Hello, World!")

이 방법으로 자바 객체를 포함하여 다양한 데이터 유형을 데이터베이스에 저장할 수 있습니다. 객체를 저장하면 getter의 응답이 이 위치의 하위 요소로 저장됩니다.

데이터베이스에서 읽기

실시간으로 앱 데이터를 업데이트하려면 방금 만든 참조에 ValueEventListener를 추가해야 합니다.

이 클래스의 onDataChange() 메소드는 리스너가 연결될 때 한 번 호출된 후 하위를 포함한 데이터가 변경될 때마다 다시 호출됩니다.

자바
Android

// Read from the database
myRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(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(DatabaseError error) {
        // Failed to read value
        Log.w(TAG, "Failed to read value.", error.toException());
    }
});

Kotlin
Android

// 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::class.java)
        Log.d(TAG, "Value is: $value")
    }

    override fun onCancelled(error: DatabaseError) {
        // 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 to fit the structure
    # of your app.
    -keepclassmembers class com.yourcompany.models.** {
      *;
    }

실행 준비

앱을 실행하기 전에 우선 출시 체크리스트를 확인하여 앱의 준비 상태를 점검하세요.

다음 단계