hyeals study
인스타그램 클론 (알림 이벤트) 본문
- 유저가 팔로우, 좋아요, 댓글을 입력했을 때 알림을 해주는 이벤트 기능 추가
[1] model 폴더에 AlarmDTO라는 코틀린 파일을 추가함 (데이터 모델로 사용할 것)
- 아래와 같이 코드를 작성함
data class AlarmDTO (
var destinationUid: String? = null,
var userId: String? = null,
var uid: String? = null,
var kind: Int = 0, //0 : 좋아요, 1: 메세지, 2: 팔로우
var message: String? = null,
var timestamp: Long? = null
)
[2] DetailViewFragment.kt로 이동해서 좋아요 버튼에 알림 이벤트를 추가함
- favoriteAlarm 메소드를 만듦 (이벤트에 대한 정보를 데이터베이스에 넣는 기능을 함)
fun favoriteAlarm(destinationUid: String){
val alarmDTO = AlarmDTO()
alarmDTO.destinationUid = destinationUid
alarmDTO.userId = FirebaseAuth.getInstance().currentUser?.email
alarmDTO.uid = FirebaseAuth.getInstance().currentUser?.uid
alarmDTO.kind = 0
alarmDTO.timestamp = System.currentTimeMillis()
FirebaseFirestore.getInstance().collection("alarms").document().set(alarmDTO)
}
- alarmDTO: 메세지를 보낼 객체
- alarmDTO에 데이터베이스에 넣을 정보들을 담은 후 FirebaseFirestore에 이 객체를 넘김
[3] 좋아요 카운터가 올라가는 부분에 favoriteAlarm메소드를 추가함
[4] CommentActivity.kt로 이동해서 댓글을 달았을 때 알람 이벤트를 추가함
- commentAlarm 메소드를 만듦 (이벤트에 대한 정보를 데이터베이스에 넣는 기능을 함)
fun commentAlarm(destinationUid: String, message: String){
var alarmDTO = AlarmDTO()
alarmDTO.destinationUid = destinationUid
alarmDTO.userId = FirebaseAuth.getInstance().currentUser?.email
alarmDTO.uid = FirebaseAuth.getInstance().currentUser?.uid
alarmDTO.kind = 1
alarmDTO.message = message
alarmDTO.timestamp = System.currentTimeMillis()
FirebaseFirestore.getInstance().collection("alarms").document().set(alarmDTO)
}
[5] commentAlarm 메소드를 댓글 다는 부분에 추가함
- 여기서 destinationUid를 intent에서 받아옴
[6] DetailViewFragment.kt로 이동해서 intent에 destinationUid값을 넘겨줌
[7] UserFragment.kt로 이동해서 팔로우 버튼에 알림 이벤트를 추가함
- followerAlarm 메소드를 추가함 (이벤트에 대한 정보를 데이터베이스에 넣는 기능을 함)
fun followerAlarm(destinationUid: String){
var alarmDTO = AlarmDTO()
alarmDTO.destinationUid = destinationUid
alarmDTO.userId = auth?.currentUser?.email
alarmDTO.uid = auth?.currentUser?.uid
alarmDTO.kind = 2
alarmDTO.timestamp = System.currentTimeMillis()
FirebaseFirestore.getInstance().collection("alarms").document().set(alarmDTO)
}
[8] 팔로우 카운터가 올라가는 부분에 followerAlarm 메소드를 추가함
- 첫 번째 표시: 최초로 누군가가 팔로우 할 때 알람이 발생하도록 함
- 두 번째 표시: 누군가가 팔로우 할 때 알람이 발생하도록 함
[9] 프로젝트를 실행한 후 팔로우, 좋아요, 댓글을 입력했을 때 firebase에 새로운 컬렉션이 이 이벤트들의 정보가 들어갔음을 확인할 수 있음
'안드로이드' 카테고리의 다른 글
RecyclerView 사용법 (0) | 2020.05.11 |
---|---|
인스타그램 클론 (알람 리스트 페이지) (2) | 2020.04.15 |
인스타그램 클론 (댓글 페이지) (0) | 2020.04.13 |
인스타그램 클론 (사진 페이지) (0) | 2020.04.10 |
인스타그램 클론 (사용자 페이지3) (0) | 2020.04.10 |