Polyglot's language & programming story.

Firebase3 ) Firebase Realtime 데이터베이스를 이용해서 데이터 송수신하기 본문

Programming/AndroidProgramming

Firebase3 ) Firebase Realtime 데이터베이스를 이용해서 데이터 송수신하기

Polyglot 2018. 7. 6. 23:06

Firebase Realtime 데이터베이스를 사용해서 데이터 송수신하기

이번에도 Udacity의 예제를 이용해서 Firebase Realtime Database를 사용해서 데이터 송수신을 하는 방법을 살펴봅시다.

Database 송수신 클래스를 알아보기

먼저 FirebaseDatabase 클래스와 DatabaseReference 객체를 알 필요가 있습니다.

FirebaseDatabase 클래스로 실시간 데이터베이스를 접근 할 수 있고 DatabaseReference 클래스는 데이터의 주소를 저장합니다.

곧 다음과 같이 사용합니다.

mFirebaseDatabase.getReference() 메소드는 데이터베이스의 루트 폴더 주소 값을 반환하는 메소드입니다.

송신을 하려면 mDatabaseReference객체를 이용해서 setValue()메소드와 push()메소드를 이용합니다. push() 메소드는 pushId를 생성시켜주는 함수이고. setValue()는 JSON 객체로 지정된 위치에 데이터를 저장하는 메소드입니다.

위 코드는 텍스트를 메시지 클래스에 형식에 맞춰 저장을 시키고 지정한 주소에 직렬화시켜 JSON 객체로 변환시킵니다.

또한 데이터베이스 안에 있는 데이터가 변할 때 수신을 위해서 리스너가 필요합니다. 리스너를 선언하고 정의한 뒤 mDatabaseReference 객체에 리스너를 등록을 해야합니다.

ChildEventListener는 5개의 메소드를 오버라이딩을 해야합니다.

  1. onChildAdded : 파이어베이스 데이터베이스의 데이터가 추가되었을 때 자동 호출
  2. onChildChanged : 파이어베이스 데이터베이스의 데이터가 수정되었을 때 자동 호출
  3. onChildRemoved : 파이어베이스 데이터베이스의 데이터가 삭제되었을 때 자동 호출
  4. onChildMoved : 파이어베이스 데이터베이스의 데이터의 리스트 위치가 변했을 때 자동 호출
  5. onCancelled : 파이어베이스 데이터베이스 통신 실패등 오류가 발생했을 때 자동 호출

또한 이렇게 만든 리스너를 addChildEventListener를 통해서 등록 해주어야 됩니다.

전체코드를 보겠습니다.

위 전체 코드는 MainActivity.java 입니다. 앞에서 논했던, 데이터 송수신까지 구현을 했습니다. 하지만 이대로는 작동이 잘 안될 것입니다.

왜냐하면 파이어베이스에서는 인증이 안된 사용자가 보내는 데이터를 걸러서 받기 때문입니다. 따라서 아직 위 예제에서는 사용자 인증을 하지 않았으니, 사용자인증을 무시하도록 설정해주어야됩니다.

파이어베이스 홈페이지에 들어가 데이터베이스 탭에서 규칙을 누릅니다.


위 규칙에서 "auth != null" 이 부분 때문에 데이터가 받아지지 않는 것인데. 이를 true로 바꿉니다 (실제로 앱을 출시한다면 이러한 방법을 하면 절대로 안됩니다.)


그대로 게시를 누르고 다시 앱에서 데이터를 보내고 잘 들어오고 리스트에 잘 보여지는지 확인하시면 됩니다.


잘 표시가 되는 것을 확인 할 수가 있습니다.

다음 포스팅에서는 권한과 Firebase UI를 이용하여 권한 인증을 알아보도록 하겠습니다.

Comments