Android Firebase

Firebase는 Google에서 제공하는 앱 개발 플랫폼으로, 다양한 백엔드 서비스를 제공합니다. 여기에는 인증, 실시간 데이터베이스, 클라우드 스토리지, 분석, 푸시 알림 등이 포함됩니다. Firebase를 사용하면 개발자는 서버 인프라를 관리하지 않고도 강력한 앱을 구축할 수 있습니다.

Firebase 주요 서비스 소개

  1. Firebase Authentication: 사용자의 인증과 관리를 지원합니다.
  2. Cloud Firestore: NoSQL 클라우드 데이터베이스로, 데이터 동기화 및 오프라인 지원 기능을 제공합니다.
  3. Firebase Realtime Database: 실시간 데이터베이스로, 데이터 변경 사항을 실시간으로 반영합니다.
  4. Firebase Cloud Messaging (FCM): 푸시 알림을 전송할 수 있는 서비스입니다.
  5. Firebase Analytics: 앱 사용 데이터를 분석합니다.

Firebase Authentication

Firebase Authentication을 사용하면 이메일/비밀번호, 소셜 로그인(Google, Facebook, Twitter 등), 전화번호 인증 등을 간편하게 구현할 수 있습니다.

Firebase Authentication 설정

  1. Firebase 프로젝트를 생성하고, Android 앱을 추가합니다.
  2. google-services.json 파일을 다운로드 받아 프로젝트의 app 폴더에 추가합니다.
  3. build.gradle 파일에 Firebase 종속성을 추가합니다.
// 프로젝트 수준 build.gradle
buildscript {
    dependencies {
        classpath 'com.google.gms:google-services:4.3.10'
    }
}

// 앱 수준 build.gradle
apply plugin: 'com.google.gms.google-services'

dependencies {
    implementation 'com.google.firebase:firebase-auth:21.0.3'
}

이메일/비밀번호 인증 예제

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;

public class MainActivity extends AppCompatActivity {
    private FirebaseAuth mAuth;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mAuth = FirebaseAuth.getInstance();

        // 사용자 등록
        mAuth.createUserWithEmailAndPassword("user@example.com", "password")
            .addOnCompleteListener(this, task -> {
                if (task.isSuccessful()) {
                    FirebaseUser user = mAuth.getCurrentUser();
                    // 성공적으로 등록됨
                } else {
                    // 등록 실패
                }
            });

        // 사용자 로그인
        mAuth.signInWithEmailAndPassword("user@example.com", "password")
            .addOnCompleteListener(this, task -> {
                if (task.isSuccessful()) {
                    FirebaseUser user = mAuth.getCurrentUser();
                    // 성공적으로 로그인됨
                } else {
                    // 로그인 실패
                }
            });
    }
}

Cloud Firestore

Cloud Firestore는 확장성이 뛰어난 NoSQL 클라우드 데이터베이스로, 클라이언트 간의 데이터 동기화 및 오프라인 지원 기능을 제공합니다.

Firestore 설정

  1. Firebase 콘솔에서 Firestore 데이터베이스를 활성화합니다.
  2. build.gradle 파일에 Firestore 종속성을 추가합니다.
dependencies {
    implementation 'com.google.firebase:firebase-firestore:24.0.0'
}

Firestore 데이터 읽기/쓰기 예제

import com.google.firebase.firestore.CollectionReference;
import com.google.firebase.firestore.FirebaseFirestore;

public class MainActivity extends AppCompatActivity {
    private FirebaseFirestore db;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        db = FirebaseFirestore.getInstance();

        // 데이터 쓰기
        Map<String, Object> user = new HashMap<>();
        user.put("first", "Ada");
        user.put("last", "Lovelace");
        user.put("born", 1815);

        db.collection("users").document("a_lovelace")
            .set(user)
            .addOnSuccessListener(aVoid -> {
                // 성공적으로 작성됨
            })
            .addOnFailureListener(e -> {
                // 작성 실패
            });

        // 데이터 읽기
        CollectionReference users = db.collection("users");
        users.get()
            .addOnCompleteListener(task -> {
                if (task.isSuccessful()) {
                    for (QueryDocumentSnapshot document : task.getResult()) {
                        Log.d("Firestore", document.getId() + " => " + document.getData());
                    }
                } else {
                    Log.w("Firestore", "Error getting documents.", task.getException());
                }
            });
    }
}

Firebase Realtime Database

Firebase Realtime Database는 JSON 형태로 데이터를 저장하며, 데이터 변경 사항을 실시간으로 반영합니다.

Realtime Database 설정

  1. Firebase 콘솔에서 Realtime Database를 활성화합니다.
  2. build.gradle 파일에 Realtime Database 종속성을 추가합니다.
dependencies {
    implementation 'com.google.firebase:firebase-database:20.0.3'
}

Realtime Database 데이터 읽기/쓰기 예제

import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

public class MainActivity extends AppCompatActivity {
    private DatabaseReference mDatabase;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mDatabase = FirebaseDatabase.getInstance().getReference();

        // 데이터 쓰기
        mDatabase.child("users").child("user1").setValue("John Doe");

        // 데이터 읽기
        mDatabase.child("users").child("user1").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String value = dataSnapshot.getValue(String.class);
                Log.d("RealtimeDatabase", "Value is: " + value);
            }

            @Override
            public void onCancelled(DatabaseError error) {
                // 읽기 실패
                Log.w("RealtimeDatabase", "Failed to read value.", error.toException());
            }
        });
    }
}

Firebase Cloud Messaging (FCM)

FCM을 사용하면 앱에 푸시 알림을 보낼 수 있습니다.

FCM 설정

  1. Firebase 콘솔에서 클라우드 메시징을 활성화합니다.
  2. build.gradle 파일에 FCM 종속성을 추가합니다.
dependencies {
    implementation 'com.google.firebase:firebase-messaging:23.0.0'
}

FCM 기본 예제

  1. MyFirebaseMessagingService 클래스를 생성하여 메시지를 수신합니다.
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;

public class MyFirebaseMessagingService extends FirebaseMessagingService {
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);

        // 메시지 처리
        if (remoteMessage.getNotification() != null) {
            Log.d("FCM", "Message Notification Body: " + remoteMessage.getNotification().getBody());
        }
    }
}
  1. AndroidManifest.xml 파일에 서비스를 등록합니다.
<service
    android:name=".MyFirebaseMessagingService"
    android:exported="true">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>
  1. 서버에서 FCM 메시지를 보냅니다. 이는 서버 측 코드로, Firebase Admin SDK를 사용하여 메시지를 보낼 수 있습니다.

종합

Firebase는 다양한 백엔드 서비스를 제공하여 앱 개발을 크게 단순화합니다. Firebase Authentication을 통해 손쉽게 사용자 인증을 처리할 수 있으며, Cloud Firestore와 Realtime Database를 통해 실시간 데이터를 저장하고 동기화할 수 있습니다. Firebase Cloud Messaging을 통해 푸시 알림을 쉽게 구현할 수 있습니다. Firebase를 사용하면 서버 인프라를 직접 관리할 필요 없이 강력한 기능을 구현할 수 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *