Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Firebase에 앱 연결, Firebase에 앱 연결

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

아직 추가하지 않았다면 Android 프로젝트에 Firebase를 추가합니다 .

데이터베이스 생성

  1. Firebase 콘솔실시간 데이터베이스 섹션으로 이동합니다. 기존 Firebase 프로젝트를 선택하라는 메시지가 표시됩니다. 데이터베이스 생성 워크플로우를 따르십시오.

  2. Firebase 보안 규칙의 시작 모드를 선택하세요.

    시험 모드

    모바일 및 웹 클라이언트 라이브러리를 시작하는 데 적합하지만 누구나 데이터를 읽고 덮어쓸 수 있습니다. 테스트 후 Firebase 실시간 데이터베이스 규칙 이해 섹션을 검토하세요.

    웹, Apple 또는 Android SDK를 시작하려면 testmode를 선택합니다.

    잠금 모드

    모바일 및 웹 클라이언트의 모든 읽기 및 쓰기를 거부합니다. 인증된 애플리케이션 서버는 여전히 데이터베이스에 액세스할 수 있습니다.

  3. 데이터베이스의 위치를 ​​선택하십시오.

    데이터베이스의 위치에 따라 새 데이터베이스의 URL은 다음 형식 중 하나가 됩니다.

    • DATABASE_NAME .firebaseio.com ( us-central1 데이터베이스용)

    • DATABASE_NAME . REGION .firebasedatabase.app (기타 모든 위치의 데이터베이스용)

  4. 완료 를 클릭합니다.

실시간 데이터베이스를 활성화하면 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:31.2.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.1.0'
}

Java

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:31.2.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.1.0'
}

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

실시간 데이터베이스는 데이터 구조화 방법, 인덱싱 방법, 데이터를 읽고 쓸 수 있는 시기를 정의할 수 있는 선언적 규칙 언어를 제공합니다.

데이터베이스에 쓰기

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!");

이러한 방식으로 Java 개체를 포함하여 다양한 데이터 유형을 데이터베이스에 저장할 수 있습니다. 객체를 저장하면 게터의 응답이 이 위치의 하위 항목으로 저장됩니다.

데이터베이스에서 읽기

앱 데이터를 실시간으로 업데이트하려면 방금 만든 참조에 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(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());
    }
});

선택 사항: 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 커뮤니티 포럼 을 방문하여 전문가의 도움을 받으세요.

출시 준비

앱을 출시하기 전에 출시 체크리스트 를 검토하여 앱이 출시될 준비가 되었는지 확인하는 것이 좋습니다!

앱만 데이터베이스에 액세스할 수 있도록 하려면 앱 체크 를 활성화해야 합니다.

다음 단계