1. firebase를 통한 로그인
homeBtnLogin.setOnClickListener {
val email = homeLoginEmail.text.toString()
val password = homeLoginPassword.text.toString()
auth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this@MainActivity) { task ->
if (task.isSuccessful) {
Toast.makeText(this@MainActivity, "ok", Toast.LENGTH_SHORT).show()
Toast.makeText(
this@MainActivity,
auth.currentUser?.uid.toString(),
Toast.LENGTH_SHORT
).show()
val intent = Intent(this@MainActivity, BordListActivity::class.java)
startActivity(intent)
} else {
Toast.makeText(this@MainActivity, "no", Toast.LENGTH_SHORT).show()
}
}
}
}
공식 문서를 참고해서 그대로 넣은 형태다.
서버에서 아이디와 비밀번호가 맞는지 체크를 해서 로그인을 해주는 형태다.
edittext에서 email과 password를 받아서 대조한다.
2. firebase
class FireBaseRepoImpl(
) : FireBaseRepo {
override fun getData(): LiveData<List<FireModel>> {
val resultLiveData = MutableLiveData<List<FireModel>>()
val database = Firebase.database
val myRef = database.getReference("borad")
myRef.addValueEventListener(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
val dataList = mutableListOf<FireModel>()
if (snapshot.exists()) {
for (userSnapshot in snapshot.children) {
val itemKey = userSnapshot.key ?: ""
val getData = userSnapshot.getValue(Model::class.java)
getData?.let { model ->
val fireModel =
FireModel(
key = itemKey,
title = model.title
)
dataList.add(fireModel)
}
}
resultLiveData.postValue(dataList)
}
}
override fun onCancelled(error: DatabaseError) {
TODO("Not yet implemented")
}
})
return resultLiveData
}
override fun deleteItem(item: FireModel) {
val database = Firebase.database
val myRef = database.getReference("borad")
myRef.child(item.key).removeValue()
}
override fun addItem(title: String) {
val database = Firebase.database
val myRef = database.getReference("borad")
myRef.push().setValue(
Model(title = title)
)
}
}
firebase는 자체적인 key값을 부여하여 해당 데이터에 접근이 가능하다.
해당하는 값은 json형태를 다시 직렬화-역직렬화 관계로 해줘야 하므로 이에 대한 데이터 클래스 설계가 생각보다 까다로웠다.
3.room의 호환
코틀린 1.9.0에서 suspend fun을 사용할 시 room 2.5.0에서는 대응이 되지 않기 때문에 에러가 발생한다
따라서 코틀린 버전을 1.8.20으로 낮추거나 room 버전을 2.6.0-rc01로 높여야한다.
안정화된 버전을 사용하기 위해 코틀린 버전을 1.8.20으로 낮춰서 작업하는 것이 좋겠으나
현재 소규모 프로젝트에서 다같이 초기에 1.9.0으로 맞췄기 때문에 room버전을 2.6.0-rc01로 높이고 오류 케이스가 발생할 때 마다 픽스하는 것이 더 현명해보였다.
나 혼자 진행하는 프로젝트면 상관이 없으나 다른 3명의 코드에도 영향이 갈 수 있기 때문이다.
참고 링크
Firebase Realtime Database(파이어베이스 실시간 데이터베이스) 전반적인 사용방법 소개 (1) 데이터 쓰
https://youtu.be/iosNuIdQoy8
zoown13.medium.com
Firebase Realtime Database(파이어베이스 실시간 데이터베이스) (2) 데이터 읽기
이전글
zoown13.medium.com
Firebase Realtime Database(파이어베이스 실시간 데이터베이스) (3) 데이터 쿼리
이번 글에서는 파이어베이스 실시간 데이터베이스(줄여서 RDB라 하자)를 이용할 시 데이터를 쿼리하는 방법과 이전에 소개하지않은 데이터를 추가하고 변경하는 방법을 소개하려고 한다. 데이
zoown13.medium.com
'개발노트 > Kotlin' 카테고리의 다른 글
파이널 프로젝트 2주차 4일 (0) | 2023.10.19 |
---|---|
파이널 프로젝트 2주차 2일 (0) | 2023.10.17 |
파이널프로젝트 1주차 7 firebase+viewmodel/livedata (0) | 2023.10.15 |
파이널 프로젝트 1주차 4일 room database (0) | 2023.10.12 |
12주차 3일 무한스크롤, 자바 라이브러리의 null예외처리 (1) | 2023.09.27 |