이번 포스팅과 다음 포스팅에서는 FCM을 이용해 push 알림을 전송하는 방법에 대해 배워보도록 하겠습니다.
① 매칭리스트에 있는 유저를 클릭했을 때, 해당 유저도 나를 좋아요 표시했는지 알 수 있도록 클릭 이벤트 리스너를 등록하자. MatchingListActivity의 onCreate 메서드에 아래의 내용을 추가한다.
listview.setOnItemClickListener { parent, view, position, id ->
matchingChk(myLikeUserInfo[position].uid.toString())
}
② matchingChk() 메서드를 아래와 같이 정의한다.
private fun matchingChk(otherUid : String) {
val postListener = object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
if(dataSnapshot.children.count() == 0) {
Toast.makeText(this@MatchingListActivity, "매칭되지 않은 유저입니다.", Toast.LENGTH_SHORT).show()
}
else {
for(dataModel in dataSnapshot.children) {
if(dataModel.key.toString().equals(uid)) {
Toast.makeText(this@MatchingListActivity, "매칭된 유저입니다.", Toast.LENGTH_SHORT).show()
}
else {
Toast.makeText(this@MatchingListActivity, "매칭되지 않은 유저입니다.", Toast.LENGTH_SHORT).show()
}
}
}
}
override fun onCancelled(databseError: DatabaseError) {
Log.w("MainActivity", "onCancelled", databseError.toException())
}
}
FirebaseRef.userLike.child(otherUid).addValueEventListener(postListener)
}
③ 코드를 실행시킨 후 매칭 리스트의 아이템을 클릭하면, 매칭 여부를 알려주는 Toast 메시지가 나타날 것이다.
push 알림을 보내는 방법에는 크게 4가지가 있다.
첫번째 방법은 이미 이전 포스팅에서 다루었으니 아래의 링크를 참조하기 바란다. 이번 포스팅에서는 Firebase 콘솔을 이용하여 push 알림을 보내는 방법에 대해 다뤄보기로 하고, 앱에서 push 알림을 보내는 것은 다음 포스팅에서 알아보기로 하자.
>> 코드로 push 알림 보내기
① Module 수준의 build.gradle 파일에 아래의 의존성을 추가한다.
implementation("com.google.firebase:firebase-messaging-ktx")
② 파이어베이스 콘솔에서 참여 > Messaging을 클릭한다. 첫 번째 캠페인 만들기 버튼을 클릭한다.
③ Firebase 알림 메시지를 선택한다.
④ 알림의 제목과 텍스트를 입력한다.
⑤ 현재 작업하고 있는 앱을 선택한다.
⑥ 예약, 전환 이벤트, 추가옵션은 별다른 설정 없이 바로 다음 버튼을 클릭한다. (아직 검토 버튼은 클릭하지 않는다.)
⑦ 이제 코드를 실행하여 Emulator 또는 본인의 스마트폰에 앱을 설치한다.
⑧ 검토 > 게시 버튼을 클릭한다.
⑨ 4~5분 정도 기다리면 푸시 알림이 도착한다. 생각보다 푸시 알림이 늦게 도착할 수도 있다.
① 특정 사용자에게만 push 알림을 보내려면 device token이 필요하다.
② device token을 가져오는 메서드를 SplashActivity에 추가하자. 자세한 내용은 아래의 공식 문서를 참조하기 바란다.
>> push 알림 관련 파이어베이스 공식 문서
FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w("MyToken", "Fetching FCM registration token failed", task.exception)
return@OnCompleteListener
}
// Get new FCM registration token
val token = task.result
// Log and toast
Log.e("MyToken", token.toString())
})
③ 빨간색 글씨로 본인의 device token이 로그로 찍힌 것을 확인할 수 있다. 이 device token을 복사하자.
④ 다시 파이어베이스 콘솔로 돌아와 알림 내용을 작성하고 테스트 메시지 전송 버튼을 클릭한다.
⑤ 복사한 device token을 붙여넣고 + 버튼을 클릭한다.
⑥ 테스트 버튼을 클릭하면 push 알림이 전송된다.