본문 바로가기

안드로이드/자바

[안드로이드/Android] Firebase Database 시작하기

반응형

관련 포스팅

Firebase Database 데이터 검색

Firebase Database 데이터 수정



최초작성 : 17.11.10

1차 수정 : 18.01.25 ( 권한 설정 ) 



 

안녕하세요. 요번 포스팅에서는 Firebase Realtime database을 적용시켜서 

개발을 좀 더 쉽고 빠르게 진행 할 수 있는 방법에 대해 소개하고자 합니다.

많은 1인 모바일 개발자들은 개인 프로젝트를 진행하다 여러 장벽에 부딪혀 포기 해야만 했던 기억들을 한번쯤은 갖고 있을 것이라 생각합니다.

물론, 서버까지 혼자서 모두 수행하시는 분들도 계시지만 저 역시 그렇지 않기에 저와 같은 사람들을 위해 해당 포스팅을 쓰고자합니다. 






1. 실시간 데이터 베이스를 사용 하기 앞서 Firebase 콘솔에 작업중인 프로젝트를 생성하셔야합니다.

1-1. 링크로 이동해 구글 로그인 후 프로젝트를 생성합니다.



그 이후 다음과 같은 정보를 입력합니다.


패키지명은 AndroidManifest.xml에 보시면 간단하게 패키지명을 볼 수 있습니다.


앱 닉네임은 선택사항이며 개인이 구분할 수 있는 이름으로 지어주면 되겠습니다.


디버그 서명 인증서는 링크를 통해 제가 포스팅한 글을 통해 인증서를 얻고 입력하시면 됩니다. 이 또한 선택사항 입니다.



1-2. 입력후 앱등록 버튼을 누르게 되면 google-service.json 파일을 다운 받을 수 있는 화면이 나옵니다.

그럼 화면에 나온 설명대로 다운로드후 해당 프로젝트 앱 루트 파일에 붙여 넣으면 되겠습니다.

그 후 다운로드한 파일을 로드하기 위한 작업을 진행합니다.


1-3. 프로젝트 레벨 gradle 파일수정

buildscript {
dependencies {
classpath 'com.google.gms:google-services:3.0.0'
}
}

1-4. 앱 레벨 gradle 파일 가장 하단에 작성합니다

apply plugin: 'com.google.gms.google-services'

위와 같이 진행하면 사전준비는 끝이 납니다. 해당 내용은 블로그가 아닌 등록 과정에서도 확인하실수 있습니다.

자 그럼 먼저 개발하시고 계신 프로젝트를 열어서 firebase를 사용하기 위해 sdk를 추가합니다.


2. app 레벨의 gradle 파일에 추가합니다.

compile 'com.google.firebase:firebase-database:10.0.1'


3. firebase의 실시간 디비를 사용하기 위해 인스턴스를 가져옵니다.

private FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
private DatabaseReference databaseReference = firebaseDatabase.getReference();


4. 데이터 전송 

4-1 권한설정 (18.01.25)

데이터를 전송하기 전 데이터 베이스 권한을 설정해야합니다.

아래 사진은 데이터베이스에 대한 권한을 공개로 바꾼 사진입니다. 하지만 초기에는 true 값이 null로 기입되어 있습니다. true 값으로 바꿔줘야지만 별다른 인증 없이 데이터를 읽고 쓸수 있습니다.


4-2 데이터 전송

2번에서 databaseReference를 통해 데이터를 전송할 수 있습니다.

아래와 같은 구문을 통해 보낼 수 있는데, 여기서 'message' 는 간단히 데이터의 카테고리 라고 생각하시면 편할 것 같습니다.

어떤 주제의 데이터를 보낼 것이냐? 의 문제인데 예제 문구에서는 실시간 채팅의 일부분을 발췌한 것으로 message라고 칭하였습니다.

그리고 전송하는 데이터는 object  타입으로 클래스 자체를 보낼 수 있습니다.

databaseReference.child("message").push().setValue(chatData);


5. 데이터 확인 

전송한 데이터는 firebase 콘솔창에서 확인 가능합니다.


6. 데이터 호출

전송해서 저장된 데이터를 코드를 통해 호출이 가능합니다.

databaseReference.child("message").addChildEventListener(new ChildEventListener() {  // message는 child의 이벤트를 수신합니다.
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
TestData chatData = dataSnapshot.getValue(TestData.class); // chatData를 가져오고

Log.d(TAG, "name=" + chatData.getUserName() + ", message=" + chatData.getMessage());

ShowToast("name=" + chatData.getUserName() + ", message=" + chatData.getMessage());
}

@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {

TestData chatData = dataSnapshot.getValue(TestData.class); // chatData를 가져오고
ShowToast("name=" + chatData.getUserName() + ", message=" + chatData.getMessage());
}

@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}

@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}

@Override
public void onCancelled(DatabaseError databaseError) {
}

});


위처럼 제가 임의로 작성한 TestData 클래스를 통해 firebase에 저장된 데이터를 가져 올 수 있습니다.



이상 firebase에 대해 알아봤습니다.

해당 포스팅은 구글 레퍼런스와 다른 예제를 조금씩 참조해 섞어서 만든 예제로써 해당 블로그를 참고해서 작업을 진행하셨을때

안되는 부분이나 오류등을 댓글로 남겨주시면 최대한 빠르게 답변 드리도록 하겠습니다.

그리구 해당 부분에 대하여 심화작업이 진행된다면 추가 포스팅이나 수정을 통해 내용을 추가하도록 하겠습니다.





※필자 본인을 위한 포스팅으로써 다소 미흡할 수 있습니다. 그래도 궁금하신점이 있으시다면 최대한 도움을 드리도록 하겠습니다.
 


반응형