1) firebase에서 프로젝트를 생성한다
2) app수준의 build.gradle에 firebase 기능 추가,
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'com.google.gms.google-services'
}
dependencies {
implementation 'com.google.firebase:firebase-database-ktx'
implementation 'com.google.firebase:firebase-auth-ktx'
implementation 'com.google.firebase:firebase-storage-ktx'
}
3) 로그인 로그아웃을 위한 auth 선언 / RealtimeDatabase를 이용하기 위한 DatabaseReference 추가,
private lateinit var articleDB: DatabaseReference
private lateinit var userDB: DatabaseReference
private val auth: FirebaseAuth by lazy { Firebase.auth }
4) child Listener 생성
override fun onChildAdded(snapshot: DataSnapshot, previousChildName: String?) {
// DB에 새로운 객체가 추가 되면 작동하는 Listener이ㅏ.
val articleModel = snapshot.getValue(ArticleModel::class.java)
articleModel ?: return
articleList.add(articleModel)
articleAdapter.submitList(articleList)
}
override fun onChildChanged(snapshot: DataSnapshot, previousChildName: String?) {}
override fun onChildRemoved(snapshot: DataSnapshot) {}
override fun onChildMoved(snapshot: DataSnapshot, previousChildName: String?) {}
override fun onCancelled(error: DatabaseError) {}
}
5) DB를 불러옴
articleDB = Firebase.database.reference.child(DB_ARTICLES) // Articles라는 database.reference의 최상위에 바로 아래있는 userDB를 Articles를 가져온것,
userDB = Firebase.database.reference.child(DB_USERS) // Users라는 database.reference의 최상위에 바로 아래있는 users를 가져온것
// 위의 DB들은 처음에는 빈상태로 시작한다.
6) View에 그려줌
articleAdapter = ArticleAdapter(
onItemClicked = {articleModel ->
if(auth.currentUser != null){
// 로그인을 한상태
if (auth.currentUser?.uid != articleModel.sellerId){
// 내가 올리지 않은 아이템
val chatRoom = ChatListItem(
buyerId = auth.currentUser!!.uid,
sellerId = articleModel.sellerId,
itemTitle = articleModel.title,
key = System.currentTimeMillis()
)
// 내가 올리지 않은 아이템이면 chatRoom을 만들어준다.
userDB.child(auth.currentUser!!.uid)
.child(CHILD_CHAT) // 'chat' 라는 이름의 CHILD_CHAT을 child로 만들어줌
.push()
.setValue(chatRoom)
userDB.child(articleModel.sellerId)
.child(CHILD_CHAT)
.push()
.setValue(chatRoom)
Snackbar.make(view, "채팅방이 생성됐습니다. 채팅앱에서 확인해주세요,. ", Snackbar.LENGTH_SHORT).show()
}
else{
// 내가 올린 아이템
Snackbar.make(view, "내가 올린 물품 입니다. ", Snackbar.LENGTH_SHORT).show()
}
}
else{
Snackbar.make(view, "로그인 후 사용해주세요", Snackbar.LENGTH_SHORT).show()
}
7) 생명주기 등록
override fun onResume() {
super.onResume()
articleAdapter.notifyDataSetChanged()
}
override fun onDestroyView() {
super.onDestroyView()
articleDB.removeEventListener(listener)
}


위에는 만들어진 User Database와 회원가입된 유저목록이 실시간으로 반영된다.
'안드로이드 > 정리(Android)' 카테고리의 다른 글
| Android - RecyclerView와 Retrofit을 사용한 Api 불러오기 (0) | 2022.03.04 |
|---|---|
| Android - ViewPager2, RecyclerView , NavigationLayout 사용하기 (0) | 2022.03.03 |
| Android - binding 사용하기 (0) | 2022.02.24 |
| (Android) 카카오톡 프로필 앱 만들기 (0) | 2022.02.14 |
| (Android) Glide란 무엇인가? (0) | 2022.02.03 |