Android에서 설치 및 설정

Firebase에 앱 연결

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

프로젝트 수준 build.gradle 파일의 buildscriptallprojects 섹션에 Google의 Maven 저장소가 포함되어야 합니다.

데이터베이스 만들기

  1. Firebase 프로젝트를 아직 만들지 않았다면 Firebase Console에서 프로젝트 추가를 클릭한 후 화면에 표시된 안내에 따라 Firebase 프로젝트를 만들거나 기존 GCP 프로젝트에 Firebase 서비스를 추가합니다.

  2. Firebase Console실시간 데이터베이스 섹션으로 이동합니다. 기존 Firebase 프로젝트를 선택하라는 메시지가 표시됩니다. 데이터베이스 만들기 워크플로를 따릅니다.

  3. Firebase 보안 규칙의 시작 모드를 선택합니다.

    테스트 모드

    모바일 및 웹 클라이언트 라이브러리를 시작할 때 유용하지만 모든 사용자가 데이터를 읽고 덮어쓸 수 있습니다. 테스트 완료 후 Firebase 실시간 데이터베이스 규칙 이해 섹션을 검토해야 합니다.

    웹, iOS 또는 Android SDK를 시작하려면 테스트 모드를 선택하세요.

    잠금 모드

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

  4. 완료를 클릭합니다.

실시간 데이터베이스를 사용 설정하면 Cloud API Manager에서도 API가 사용 설정됩니다.

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

다음과 같이 모듈(앱 수준) Gradle 파일(일반적으로 app/build.gradle)에 실시간 데이터베이스 Android 라이브러리의 종속 항목을 추가합니다.

자바

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

Kotlin+KTX

implementation 'com.google.firebase:firebase-database-ktx:19.4.0'

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

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

데이터베이스에 쓰기

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

자바

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

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

Kotlin+KTX

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

myRef.setValue("Hello, World!")

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

데이터베이스에서 읽기

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

이 클래스의 onDataChange() 메서드는 리스너가 연결될 때 한 번 트리거된 후 하위 항목을 포함하여 데이터가 변경될 때마다 다시 트리거됩니다.

자바

// 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+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())
    }
})

선택사항: 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.** {
      *;
    }

출시 준비

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

다음 단계