Channel
채널 생성¶
대화를 위한 채널을 생성합니다.
targetId
의 경우HiveTalkPlusUser
객체에서getUserId
함수를 통하여 얻어올 수 있습니다.- data의 경우, 최대 5개의 key-value pair를 입력할 수 있습니다. key의 최대 size는 128자 이고 최대 value size는 1024자입니다.
- 채널 타입의 경우 private, public, invitationOnly 타입을 지원합니다.
- type 필드는 필수 입니다.
- invitationOnly 타입의 경우 invitationCode도 추가적으로 필수 필드입니다.
Type | 정의값 | Join 가능 여부 | FCM 지원 |
---|---|---|---|
PRIVATE | private | 불가 | 지원 |
PUBLIC | public | 가능 | 지원 |
INVITATION ONLY | invitationOnly | 가능, Invitation Code 필요 | 지원 |
BROADCAST | broadcast | 가능 | 지원 |
SUPER_PUBLIC | super_public | 가능 | 미지원 |
SUPER_PRIVATE | super_private | 가능 | 미지원 |
- PRIVATE 타입의 경우 채널 id와 참여 사용자(targetIds)가 동일한 경우 reuseChannel 파라미터를 true로 설정하여 기존 생성된 채널을 재사용할 수 있습니다. 이는 1:1 대화를 구현하는데 유용하게 사용할 수 있습니다.
- PUBLIC 타입 채널에 ban당하지 않은 사용자는 누구나 가입할 수 있습니다.
- INVITATION_ONLY 타입의 경우 invitationCode를 제공해야 채널 가입이 가능합니다.
- BROADCAST 타입의 경우:
- 채널 owner가 메시지 발송 시 채널 멤버 모두에게 메시지가 발송됩니다.
- 채널 owner가 아닌 채널 멤버가 메시지 발송 시 채널 owner에게만 메시지가 전달됩니다.
- SUPER_PRIVATE, SUPER_PUBLIC 타입의 경우,
- 최대 멤버 제한수를 100명 이상으로 설정할 수 있습니다.
- members와 bannedUsers 필드에 사용자 정보가 채워져서 내려오는 일반 채널과 달리:
- members와 bannedUsers 필드는 빈 상태로 내려옵니다.
- FCM Push Notification이 지원되지 않습니다.
HiveTalkPlus.createChannel(targetIds, channelId, reuseChannel, maxMemberCount, hideMessagesBeforeJoin, channelType, channelName, invitationCode, imageUrl, metaData,
object : HiveTalkPlus.CallbackListener<HiveTalkPlusChannel?> {
override fun onSuccess(channel: HiveTalkPlusChannel?) {}
override fun onFailure(i: Int, e: Exception?) {}
})
HiveTalkPlus.createChannel(withUserIds: targetIds, channelId: channelId, reuseChannel: reuseChannel, maxMemberCount: maxMemberCount, hideMessagesBeforeJoin: hideMessagesBeforeJoin, channelType: channelType, channelName: channelName, invitationCode: invitationCode, imageUrl: imageUrl, metaData: metaData, success: { channel in
// SUCCESS
}, failure: { errorCode, error in
// FAILURE
})
채널 조회¶
참여중인 채널 혹은 Public 채널에 한하여 채널 ID를 이용하여 채널을 조회할 수 있습니다.
채널 정보 업데이트¶
채널의 정보를 업데이트 할 수 있습니다.
채널 목록 조회¶
1. 전체 Public 채널 목록 조회¶
참여 중이 아니더라도 전체 Public 채널 목록을 조회할 수 있습니다. Pagination 처리가 되어 있어 다음 페이지 조회를 위해서는 이전 조회 시에 리턴 받은 HiveTalkPlusChannel
객체 중 마지막 객체를 넣으면 그다음 페이지를 조회할 수 있습니다.
2. 현재 참여중인 채널 목록 조회¶
현재 참여 중인 채널 목록을 조회할 수 있습니다. Pagination 처리가 되어 있어 다음 페이지 조회를 위해서는 이전 조회 시에 리턴 받은 HiveTalkPlusChannel
객체 중 마지막 객체를 넣으면 그다음 페이지를 조회할 수 있습니다.
3. 숨긴 채널 목록 조회¶
사용자가 HideChannel
함수를 호출하여 숨긴 채널을 조회할 수 있습니다. Pagination 처리가 되어 있어 다음 페이지 조회를 위해서는 이전 조회 시에 리턴 받은 HiveTalkPlusChannel
객체 중 마지막 객체를 넣으면 그다음 페이지를 조회할 수 있습니다.
4. 전체 채널의 안읽은 메시지 수 조회¶
현재 참여 중인 모든 채널에 안 읽은 메시지 숫자를 조회할 수 있습니다.
5. 참여중인 채널 검색¶
현재 참여 중인 채널 목록을 검색할 수 있습니다. 검색 가능한 항목은 채널명, 채널 참여 중인 사용자 목록입니다.
채널 사용자 관리¶
1. 채널에 사용자 초대하기¶
채널에 사용자를 초대할 수 있습니다. 채널의 Owner가 아니어도 초대가 가능합니다.
2. 채널에서 사용자 제거하기¶
채널에 참여한 사용자를 제거할 수 있습니다. 채널의 Owner만 수행 가능합니다.
3. 사용자 차단하기¶
채널에 참여한 사용자를 차단하는 기능을 제공합니다. 차단된 사용자는 즉시 채널에서 퇴장당하며 차단 해제가 될 때까지 들어올 수 없습니다. 채널의 Owner만 수행 가능합니다.
4. 사용자 차단 해제하기¶
채널에서 차단되었던 사용자를 차단해 제합니다. 채널의 Owner만 수행 가능합니다.
5. 사용자 Mute¶
채널에 참여한 특정 사용자가 메시지 발송을 못 하도록 막는 mute 기능을 제공합니다. 채널의 Owner만 수행 가능합니다.
6. 사용자 Mute 해제¶
채널 사용자의 mute 상태를 해제할 수 있습니다. 채널의 Owner만 수행 가능합니다.
채널 참여 / 나가기¶
1. 채널에 참여하기¶
Public 타입의 채널은 Owner가 초대하지 않아도 사용자가 임의로 참여할 수 있습니다.
2. InvitationOnly 채널에 참여하기¶
InvitationOnly 채널의 경우 채널에 정의된 invitationCode가 필요합니다. 해당 값을 입력하여 invitationOnly 채널에 참여할 수 있습니다.
3. 채널 나가기¶
채널에서 나갈 수 있습니다. deleteChannelIfEmpty
파라미터를 true
로 설정하면 채널에 참가 멤버가 더 이상 없을 경우에만 채널에서 나갈 수 있습니다.
채널 내 메시징¶
1. 채널 내 메시지 목록 조회¶
채널 내 메시지 목록을 조회할 수 있습니다. 마지막 수신 시간을 기준으로 정렬되어 있습니다.
2. 채널 내 파일 메시지 목록 조회¶
채널 내 파일이 첨부된 메시지 목록을 조회할 수 있습니다. 마지막 수신 시간을 기준으로 정렬되어 있습니다.
3. 메시지 발송¶
채널에 메시지를 발송할 수 있습니다. 현재 지원하는 타입은 text, hidden, custom, admin 타입입니다.
- hidden 메시지 타입 발송 시, push notification은 발송되지 않습니다.
- admin 메시지 타입은 TalkPlus 대시보드 또는 REST API를 통해서만 발송이 가능합니다.
- data의 경우, 최대 5개의 Key-value 형식의 데이터를 넣을 수 있습니다.
- key값의 최대 길이는 128자이고, value값의 최대 길이는 1024자입니다.
- 메시지 텍스트와 data 둘 다 빈 값일 경우 발송에 실패합니다.
메세지 텍스트의 허용된 최대 길이는 8192자입니다.
Type | 정의값 |
---|---|
TEXT | TYPE_TEXT |
HIDDEN | TYPE_HIDDEN |
CUSTOM | TYPE_CUSTOM |
ADMIN | TYPE_ADMIN |
// 메시지 발송
HiveTalkPlusApi.SendMessage(channel, text, type, metaData, (HiveTalkPlusMessage message) => {
// SUCCESS
}, (int statusCode, Exception e) => {
// FAILURE
});
// 파일 업로드
HiveTalkPlusApi.SendFileMessage(channel, text, type, metaData, filePath, (HiveTalkPlusMessage message) => {
// SUCCESS
}, (int statusCode, Exception e) => {
// FAILURE
});
// 메시지 발송
HiveTalkPlus.sendMessage(channel, text, type, metaData,
object : HiveTalkPlus.CallbackListener<HiveTalkPlusMessage?> {
override fun onSuccess(message: HiveTalkPlusMessage?) {}
override fun onFailure(i: Int, e: Exception?) {}
})
// 파일 업로드
HiveTalkPlus.sendFileMessage(channel, text, type, metaData, file,
object : HiveTalkPlus.CallbackListener<HiveTalkPlusMessage?> {
override fun onSuccess(message: HiveTalkPlusMessage?) {}
override fun onFailure(i: Int, e: Exception?) {}
})
4. 메시지 읽음 확인¶
안 읽은 메시지 수를 카운팅 하기 위해 메시지 읽음 확인 API를 제공합니다.
5. 특정 채널 안 읽은 메시지 수 확인¶
특정 메시지를 읽지 않은 사용자 수를 확인할 수 있는 기능을 제공합니다.
채널 숨기기 / 보이기¶
1. 채널 숨기기¶
현재 참여 중인 채널 목록에 안 나오도록 채널을 숨길 수 있습니다.
2. 채널 보이기¶
현재 참여 중인 채널 목록에 다시 나오도록 채널을 숨김 해제를 할 수 있습니다.
채널 Freeze / Unfreeze¶
1. 채널 Freeze¶
채널을 프리징 합니다 (메시지 발송 기능 정지)
2. 채널 Unfreeze¶
채널의 프리징 상태를 해제합니다 (메시지 발송 가능)
채널 주인 변경¶
채널 주인(owner)은 채널 소유권을 채널 내 멤버에게 이관할 수 있습니다.
Event¶
아래와 같이 이벤트를 받을 수 있습니다.
HiveTalkPlusApi.OnMemberAdded += (sender, args) => {
// 현재 참여중인 채널에 새로운 멤버가 추가되었을 경우 발생하는 이벤트
};
HiveTalkPlusApi.OnMemberLeft += (sender, args) => {
// 현재 참여중인 채널에 멤버가 나갔을 경우 발생하는 이벤트
};
HiveTalkPlusApi.OnMessageReceived += (sender, args) => {
// 현재 참여중인 채널에 메시지를 수신할 경우 발생하는 이벤트
};
HiveTalkPlusApi.OnChannelAdded += (sender, args) => {
// 채널이 추가되었을 경우 발생하는 이벤트
};
HiveTalkPlusApi.OnChannelChanged += (sender, args) => {
// 현재 참여중인 채널에 변동사항이 있을 경우 발생하는 이벤트
};
HiveTalkPlusApi.OnChannelRemoved += (sender, args) => {
// 채널이 삭제되었을 경우 발생하는 이벤트
};
HiveTalkPlusApi.OnPublicMemberAdded += (sender, args) => {
// Public 채널에 새로운 멤버가 추가되었을 경우 발생하는 콜백
};
HiveTalkPlusApi.OnPublicMemberLeft += (sender, args) => {
// Public 채널에 멤버가 나갔을 경우 발생하는 콜백
};
HiveTalkPlusApi.OnPublicChannelAdded += (sender, args) => {
// Public 채널이 추가되었을 경우 발생하는 콜백
};
HiveTalkPlusApi.OnPublicChannelChanged += (sender, args) => {
// Public 채널에 변동사항이 있을 경우 발생하는 콜백
};
HiveTalkPlusApi.OnPublicChannelRemoved += (sender, args) => {
// 채널이 삭제되었을 경우 발생하는 이벤트
};
HiveTalkPlus.addChannelListener(tag, object : HiveTalkPlus.ChannelListener() {
override fun onMemberAdded(channel: HiveTalkPlusChannel?, users: List<HiveTalkPlusUser>?) {
// 현재 참여중인 채널에 새로운 멤버가 추가되었을 경우 발생하는 이벤트
}
override fun onMemberLeft(channel: HiveTalkPlusChannel?, users: List<HiveTalkPlusUser>?) {
// 현재 참여중인 채널에 멤버가 나갔을 경우 발생하는 이벤트
}
override fun onMessageReceived(channel: HiveTalkPlusChannel?, message: HiveTalkPlusMessage?) {
// 현재 참여중인 채널에 메시지를 수신할 경우 발생하는 이벤트
}
override fun onChannelAdded(channel: HiveTalkPlusChannel?) {
// 채널이 추가되었을 경우 발생하는 이벤트
}
override fun onChannelChanged(channel: HiveTalkPlusChannel?) {
// 현재 참여중인 채널에 변동사항이 있을 경우 발생하는 이벤트
}
override fun onChannelRemoved(channel: HiveTalkPlusChannel?) {
// 채널이 삭제되었을 경우 발생하는 이벤트
}
override fun onPublicMemberAdded(channel: HiveTalkPlusChannel?, users: List<HiveTalkPlusUser>?) {
// Public 채널에 새로운 멤버가 추가되었을 경우 발생하는 콜백
}
override fun onPublicMemberLeft(channel: HiveTalkPlusChannel?, users: List<HiveTalkPlusUser>?) {
// Public 채널에 멤버가 나갔을 경우 발생하는 콜백
}
override fun onPublicChannelAdded(channel: HiveTalkPlusChannel?) {
// Public 채널이 추가되었을 경우 발생하는 콜백
}
override fun onPublicChannelChanged(channel: HiveTalkPlusChannel?) {
// Public 채널에 변동사항이 있을 경우 발생하는 콜백
}
override fun onPublicChannelRemoved(channel: HiveTalkPlusChannel?) {
// Public 채널이 삭제되었을 경우 발생하는 이벤트
}
})
// YOUR_CLASS_INSTANCE : HiveTalkPlusChannelDelegate를 구현하는 클래스 인스턴스
HiveTalkPlus.add(YOUR_CLASS_INSTANCE, tag: tag)
func memberAdded(_ channel: HiveTalkPlusChannel!, users: [HiveTalkPlusUser]!) {
// 현재 참여중인 채널에 새로운 멤버가 추가되었을 경우 발생하는 콜백
}
func memberLeft(_ channel: HiveTalkPlusChannel!, users: [HiveTalkPlusUser]!) {
// 현재 참여중인 채널에 멤버가 나갔을 경우 발생하는 콜백
}
func messageReceived(_ channel: HiveTalkPlusChannel!, message: HiveTalkPlusMessage!) {
// 현재 참여중인 채널에 메시지를 수신할 경우 발생하는 이벤트
}
func channelAdded(_ channel: HiveTalkPlusChannel!) {
// 채널이 추가되었을 경우 발생하는 콜백
}
func channelChanged(_ channel: HiveTalkPlusChannel!) {
// 현재 참여중인 채널에 변동사항이 있을 경우 발생하는 콜백
}
func channelRemoved(_ channel: HiveTalkPlusChannel!) {
// 채널이 삭제되었을 경우 발생하는 콜백
}
func publicMemberAdded(_ channel: HiveTalkPlusChannel!, users: [HiveTalkPlusUser]!) {
// Public 채널에 새로운 멤버가 추가되었을 경우 발생하는 콜백
}
func publicMemberLeft(_ channel: HiveTalkPlusChannel!, users: [HiveTalkPlusUser]!) {
// Public 채널에 멤버가 나갔을 경우 발생하는 콜백
}
func publicChannelAdded(_ channel: HiveTalkPlusChannel!) {
// Public 채널이 추가되었을 경우 발생하는 콜백
}
func publicChannelChanged(_ channel: HiveTalkPlusChannel!) {
// Public 채널에 변동사항이 있을 경우 발생하는 콜백
}
func publicChannelRemoved(_ channel: HiveTalkPlusChannel!) {
// Public 채널이 삭제되었을 경우 발생하는 콜백
}