관리 메뉴

hyeals study

인스타그램 클론 (알림 이벤트) 본문

안드로이드

인스타그램 클론 (알림 이벤트)

hyeals 2020. 4. 14. 03:36

- 유저가 팔로우, 좋아요, 댓글을 입력했을 때 알림을 해주는 이벤트 기능 추가

 

[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 메소드를 추가함

 

requestFollow 메소드

 

- 첫 번째 표시: 최초로 누군가가 팔로우 할 때 알람이 발생하도록 함

 

- 두 번째 표시: 누군가가 팔로우 할 때 알람이 발생하도록 함


[9] 프로젝트를 실행한 후 팔로우, 좋아요, 댓글을 입력했을 때 firebase에 새로운 컬렉션이 이 이벤트들의 정보가 들어갔음을 확인할 수 있음

 

좋아요 눌렀을 때 (kind = 0)

 

Comments