상세 컨텐츠

본문 제목

[안드로이드 코틀린] 채팅앱 만드는 방법 part8 - 메시지 보내기

안드로이드

by aries574 2022. 10. 27. 17:18

본문


이번 시간에는 채팅앱 만들기 여덟 번째 시간

메시지 보내는 방법에 대하여 알아보겠습니다.

이전 포스팅은 아래 링크를 들어가시면 됩니다.

2022.10.26 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part7 - 채팅 액티비티

 

[안드로이드 코틀린] 채팅앱 만드는 방법 part7 - 채팅 액티비티

이번 시간에는 채팅앱 만들기 일곱 번째 시간 대화 상대를 선택해서 대화 화면으로 이동하는 방법을 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.10.25 - [안드로이드] - [

aries574.tistory.com


목차

1. 실행 화면
2. 메시지 모델 클래스 message.kt
3. 채팅 ChatActivity.kt


1. 실행 화면

 

2. 메시지 모델 클래스 message.kt

- 설명 -

 1. 메시지 정보 담을 클래스

 2. 대화 내용:  message

 3. 접속자 uId:  sendId

data class Message(
    var message: String?,
    var sendId: String?
){
    constructor():this("","")
}

 

반응형


3. 채팅 ChatActivity.kt

- 설명 -

 1. senderRoom = receiverUid + senderUid

   보낸 이의 방의 값을 받는 이 uId와 보낸 이 uId로 

   합쳐서 만들었습니다.

 2. receiverRoom = senderUid + receiverUid

   받는 이의 방의 값을 보낸 이 uId와 받는 이 uId로

   합쳐서 만들었습니다.

 3. mDbRef.child("chats").child(senderRoom!!).child("messages").push()
                .setValue(messageObject)

   chat -> senderRoom -> message -> 메시지 저장

class ChatActivity : AppCompatActivity() {

    private lateinit var receiverName: String
    private lateinit var receiverUid: String

    //바인딩 객체
    private lateinit var binding: ActivityChatBinding

    lateinit var mAuth: FirebaseAuth //인증 객체
    lateinit var mDbRef: DatabaseReference//DB 객체

    private lateinit var receiverRoom: String //받는 대화방
    private lateinit var senderRoom: String //보낸 대화방

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityChatBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //넘어온 데이터 변수에 담기
        receiverName = intent.getStringExtra("name").toString()
        receiverUid = intent.getStringExtra("uId").toString()

        mAuth = FirebaseAuth.getInstance()
        mDbRef = FirebaseDatabase.getInstance().reference

        //접속자 uId
        val senderUid = mAuth.currentUser?.uid

        //보낸이방
        senderRoom = receiverUid + senderUid

        //받는이방
        receiverRoom = senderUid + receiverUid

        //액션바에 상대방 이름 보여주기
        supportActionBar?.title = receiverName

        //메시지 전송 버튼 이벤트
        binding.sendBtn.setOnClickListener {

            val message = binding.messageEdit.text.toString()
            val messageObject = Message(message, senderUid)

            //데이터 저장
            mDbRef.child("chats").child(senderRoom).child("messages").push()
                .setValue(messageObject).addOnSuccessListener {
                    //저장 성공하면
                    mDbRef.child("chats").child(receiverRoom).child("messages").push()
                        .setValue(messageObject)
                }
        }
    }
}

2022.10.13 - [안드로이드] - [안드로이드 코틀린] 갤러리에서 다중 선택 사진 화면 전환하는 방법

 

[안드로이드 코틀린] 갤러리에서 다중 선택 사진 화면 전환 하는 방법

이번 시간에는 갤러리에서 가져온 여러 장의 사진을 을 앞 뒤로 넘겨서 보는 방법을 알아보겠습니다. 이전 프로젝트를 수정해서 만들게 되니 이전 포스팅을 먼저 보시면 됩니다. 2022.10.12 - [안드

aries574.tistory.com

2022.03.20 - [안드로이드] - [안드로이드] ToDoList SQLite 만드는 방법 part1 - 화면과 DB

 

[안드로이드] ToDoList SQLite 만드는 방법 part1 - 화면과 DB

이번 시간에는 ToDoList SQLite 할 일 목록 화면과 DB부분을 만들어 보겠습니다. 목차 1. 실행 화면 2. 라이브러리 등록 3. ToDo 클래스 만들기 4. ToDo DB 만들기 5. ToDo 화면 만들기 6. 메인 화면 구성 acti..

aries574.tistory.com

2022.03.16 - [안드로이드] - [안드로이드] Firebase Storage 이미지 업로드 part1

 

[안드로이드] Firebase Storage 이미지 업로드 part1

이번 시간에는 Firebase를 통해서 이미지를 업로드하는 방법을 알아보겠습니다. 간단하게 설명하자면 Firebase의 Storage에 이미지를 업로드하고, 이미지가 저장된 주소를 Realtime Database에 저장합니다.

aries574.tistory.com

 

반응형

관련글 더보기

댓글 영역