Android : Firebase - Realtime DB
이번에 Firebase가 필요한 상황이 생기면서 기본적인 기능을 구현해보았다.
작업은 크게 3가지로 나뉜다.
1. Firebase 에 새 프로젝트 추가하고 안드로이드 앱 등록하기
2. 안드로이드에서 Firebase와 연동하기
3. 안드로이드에서 코드로 Firebase에 접근하여 SQL 조회, 수정 등 수행하기
- Firebase 홈페이지에서 새 프로젝트 추가
- 프로젝트 이름 입력
- 구글에서 제공하는 앱 사용 데이터 분석 플랫폼인 Google 애널리틱스인데 필요하면 사용하면 좋겠다.
- 여기까지 프로젝트 추가를 해주고 프로젝트 안으로 가서 Realtime Database 클릭
- 다음 다음을 눌러서 데이터 베이스를 만들어준다.
- 자신 어플리케이션 패키지 주소를 정확히 입력해준다.
- 나머지는 안 해도 된다.
- 그러면 구성 파일로 google-services.json 파일을 주는데 안드로이드 스튜디오에서 Project로 보기한 후 app 폴더 안에 넣어준다.
- 여기까지 외부 작업은 끝났다.
- build.gradle 에 다음 코드를 추가한다.
// build.gradle(Project)
dependencies {
...
classpath 'com.google.gms:google-services:4.3.10'
}
// build.gradle(Module)
plugin{
...
id 'com.google.gms.google-services'
}
dependencies {
...
// firebase
implementation platform('com.google.firebase:firebase-bom:29.0.0')
implementation 'com.google.firebase:firebase-database-ktx'
}
- 안드로이드 Tools에서 Firebase 를 연동해준다. 가끔 연결 안 될 때가 있는데
- 플러그인에 id 'com.google.gms.google-services' 를 주석 처리하고 sync now
- 주석을 풀고 sync now 하면 connect가 된다.
- 다른 경우도 있으니 검색하면 잘 나와 있다.
- 여기까지 안드로이드에서 Firebase 연동도 완료되었다. 이제 코드로 데이터베이스에 접근한다.
- 간단하게 구현하고자 object로 구현하고 필요할 때 불러서 사용하도록 했다.
object FirebaseDB{
// Firebase DB 객체 생성
// 이렇게 하면 mDatabase는 Firebase의 내 프로젝트를 가르키게 된다.
private var mDatabase: DatabaseReference = FirebaseDatabase.getInstance().reference
fun write(){
mDatabase.child(하위 객체).setValue(넣을 값)
.addOnSuccessListener {
// 저장 성공 시
}
.addOnFailureListener { e ->
// 저장 실패 시
}
}
/**
* addValueEventListener 경로의 전체 내용에 대한 변경 사항을 읽고 수신 대기한다. - 값이 바뀔 때 마다 onDataChange 호출
*
* addListenerForSingleValueEvent : 한 번 호출된 후 다시 호출 되지 않는다. - 1회성
* 한 번만 호출되고 즉시 삭제되는 콜백이 필요한 경우에 사용한다.
* 한 번 로드된 후 자주 변경되지 않거나 능동적으로 수신 대기할 필요가 없는 데이터에 유용하다.
*
* addChildEventListener : 데이터베이스의 특정한 노드에 대한 변경을 수신 대기하는데 유용하다.
* 목록을 다루는 앱은 단일 개체에 사용되는 값 이벤트보다는 하위 이벤트를 수신 대기해야한다.
* 하위 하목에 push() 메소드를 통해 새로 추가되거나 updateChildren() 메소드를 통해 업데이트 되는 경우가 그 예이다.
*
* DB 읽기 동작의 오버헤드를 줄이고 성능을 높이기 위해서 용도에 맞게 구현해야한다.
*/
fun read(){
mDatabase.addValueEventListener(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
// snapshot.children 을 통해 내부 데이터를 확인할 수 있다.
// addValueEventListener 을 사용하였기에 데이터가 변경될 때 마다 이곳이 호출된다.
}
override fun onCancelled(error: DatabaseError) {
// onCandelled 시 콜백
}
})
}
}
Firebase Database 데이터 읽기, 3가지 방법
Author And Source
이 문제에 관하여(Android : Firebase - Realtime DB), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@donsco/Android-Firebase-Realtime-DB저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)