1:1 채팅 채널에서 채널명 변경 이슈

채널프래그먼트를 생성하면서 setCustomChannelFragment 로 프래그먼트를 넣고
setUserHeader를 사용 하고 있습니다.

이때 CustomChannelFragmnet 의 onDraw 함수 안에서
view?.findViewById(com.sendbird.uikit.R.id.chvChannelHeader)?.let { appbar →
appbar.titleTextView.text = name
headerRightButton = appbar.rightImageButton
}

이런 식으로 앱바에 접근하여 타이틀을 변경해줬습니다.
그런데 메세지 입력을 보내면 타이틀이 채널 id 로 변경 됩니다.
왜 그런건가요? 이유를 알려주세요

안녕하세요. 내용을 읽어봤는데, 좀더 자세히 설명해주실수 있을까요? 코드상의 appbar.titleTextView.text = name 이부분에서 name 의 값이 어떤것인지에 따라 상황이 변할 수 있을것 같아서요.

private val coachSBUser: Member?
get() {
return channel.members.firstOrNull { it.userId.startsWith(“c”) }
}
override fun onDrawPage() {
super.onDrawPage()
val name = coachSBUser?.nickname ?: channel.name
view?.findViewById(com.sendbird.uikit.R.id.chvChannelHeader)?.let { appbar →
appbar.titleTextView.text = name
headerRightButton = appbar.rightImageButton
}

}
이런식으로 쓰고 있습니다.

상속하여 사용하시는 ChannelFragment에서는 channel 정보가 변경이 될때마다 appbar의 text정보를 갱신하고 있습니다. 때문에 한번 appbar의 text를 변경하셨다고 하더라도 채널정보가 바뀔때마다 text를 다시 재갱신을 하니 말씀하신 문제가 발생한것으로 보입니다.

ChannelFragment를 상속을 하여 사용을 하는경우 자체적으로 UI를 만드시는것을 권장합니다. 그렇지 않다면 현재 text만 바꾸는 인터페이스를 지원하고 있지 않으니, 채널의 이름을 변경하는것은 현재로썬 불가능해 보입니다.

답변 감사합니다. 좀더 질문 드립니다.
혹시 채널 정보가 변경되는 상속가능한 함수가 있을까요? 찾아도 보이진 않는 것 같습니다만.
그리고 커스텀 ui를 만들려고 한다면, 앱바를 제외하고 나머지를 그대로 사용할 방법도 없는 거겠죠?
커스텀 ui를 작성하기에는 시간이 부족해서 물어봅니다.

넵 맞습니다. channel정보를 가지고 ChannelFragment를 그리는것이라 draw하는 부분에 대한 function이 열려있지 않습니다. 만약 이부분을 여게 되면 이것을 상속해서 사용하는 유저들은 UIKit에서 사용하고 있는 UI component들의 리소스 아이디들을 전부 알고 사용해야하기 때문입니다.

말씀하신대로 앱바를 제외하고 나머지를 그대로 사용하시려면, setUseHeader(false)로 사용하시고, 앱바 부분만 따로 만드는것은 어떨까요? ChannelFragment를 상속하는것이 아닌 ChannelFragment와 CustomAppBar를 구성하셔서 화면을 만들면 가능하지 않을까요?

액티비티를 따로 만들어서 툴바와 프래그먼트바디 를 구성 해놓은 다음
ChannelFragmnet를 생성해서 프래그먼트 바디에 넣어주는 방식으로 하니깐 해결 됐습니다.
답변 감사합니다.

1 Like

@suno

2.1.1 버전에 setHeaderTitle(String) 메소드가 추가되었습니다. Builder를 통해 channel title을 변경하실 수 있습니다.