- 간단히 채팅기능을 구현할 수 있도록 도와주는 채팅 솔루션 플랫폼
JIVER 기능
- 일반적으로 카카오톡에서 사용 되는 기능 대부분을 지원
- 채널 개설 (1:1 부터 1:N 채널 모두 제한없이 사용)
- 익명 채팅 구현가능 ( 우리쪽에서 개발하기 나름 )
- 파일 업로드 ( 자이버에 업로드 후 링크 전달 )
- 안드로이드 , IOS , 유니티 , 웹(private) 플랫폼 지원
- 이전 채팅 내용 모두 저장
- 월 이용자 2천명까지 무료
- 대시 보드를 통해 이용 추이 파악 가능
- 어드민 페이지를 통한 채널 관리 가능 (채널 관리자 설정 가능)
JIVER 구현 방법
-
JIVER SDK를 사용하기 위해서는 IgawCommon 라이브러리 연동이 필요합니다.
-
발급받은 JIVER App ID를 AndroidManifest.xml에 등록합니다.
-
JIVER SDK의 초기화를 진행합니다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Jiver.IGAWInit(this, new Jiver.IGAWInitListener() {
@Override
public void initialized(String appKey, String userId) {
Jiver.init(appKey);
}
});
// other setup code
}
- JIVER에서 표시할 사용자 정보를 입력합니다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Jiver.IGAWInit(this, new Jiver.IGAWInitListener() {
@Override
public void initialized(String appKey, String userId) {
Jiver.init(appKey);
Jiver.login(userId, USER_NICKNAME);
}
});
// other setup code
}
- 접속할 채널을 입력합니다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Jiver.IGAWInit(this, new Jiver.IGAWInitListener() {
@Override
public void initialized(String appKey, String userId) {
Jiver.init(appKey);
Jiver.login(userId, USER_NICKNAME);
Jiver.join(CHANNEL_URL);
}
});
// other setup code
}
- JIVER 이벤트 핸들러를 등록합니다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Jiver.IGAWInit(this, new Jiver.IGAWInitListener() {
@Override
public void initialized(String appKey, String userId) {
Jiver.init(appKey);
Jiver.login(userId, USER_NICKNAME);
Jiver.join(CHANNEL_URL);
Jiver.setEventHandler(new JiverEventHandler() {
@Override
public void onConnect(Channel channel) {
// JIVER 채널에 정상적으로 접속된 경우
}
@Override
public void onError(int code) {
// JIVER 잘못된 APP_ID 등 복구 불가능한 에러가 발생한 경우
}
@Override
public void onMessageReceived(Message message) {
// 일반 채팅 메시지를 받은 경우
}
@Override
public void onSystemMessageReceived(SystemMessage systemMessage) {
// 시스템 메시지를 받은 경우
}
@Override
public void onBroadcastMessageReceived(BroadcastMessage broadcastMessage) {
// 관리자 메시지를 받은 경우
}
@Override
public void onFileReceived(FileLink fileLink) {
// 파일을 받은 경우
}
@Override
public void onAllDataReceived(Jiver.JiverDataType type, int count) {
// Jiver에서 모든 데이터를 수신한 경우. notifyDataSetChanged()를 이용하여 ListView를 업데이트 할 수 있음.
}
@Override
public void onMessageDelivery(boolean sent, String message, String data, String id) {
// 정상적으로 메시지가 발송되었는지 확인.
}
@Override
public void onReadReceived(ReadStatus readStatus) {
// 읽음 상태 표시 메시지를 받은 경우
}
@Override
public void onTypeStartReceived(TypeStatus typeStatus) {
// 타이핑 상태 표시 메시지를 받은 경우
}
@Override
public void onTypeEndReceived(TypeStatus typeStatus) {
// 타이핑 상태 표시 메시지를 받은 경우
}
@Override
public void onMessagingStarted(MessagingChannel messagingChannel) {
// Jiver.startMessaging()이 성공적으로 호출된 경우
}
@Override
public void onMessagingUpdated(MessagingChannel messagingChannel) {
// Jiver.inviteMessaging()이 성공적으로 호출된 경우
}
@Override
public void onMessagingEnded(MessagingChannel messagingChannel) {
// Jiver.endMessaging()이 성공적으로 호출된 경우
}
@Override
public void onMessagingHidden(MessagingChannel messagingChannel) {
// Jiver.hideMessaging()이 성공적으로 호출된 경우
}
});
}
});
// other setup code
}
- 접속 하기
Jiver.connect();
- 접속 끊기
@Override
protected void onDestroy() {
super.onDestroy();
Jiver.disconnect();
}
- 메시지 보내기
private void send(String message) {
Jiver.send(message);
}
- 필요한 데이터와 함께 보내기
private void sendWithData(String message, String data) {
Jiver.sendWithData(message, data);
}
팁 ( TIP )
- 이전 메시지 가져오기
// 마지막 50개의 메세지를 로드한 후 JIVER 채널에 접속합니다.
Jiver.queryMessageList(Jiver.getChannelUrl()).prev(Long.MAX_VALUE,50,new MessageListQuery.MessageListQueryResult(){
@Override
public void onResult(List<MessageModel>messageModels){
for(MessageModel model:messageModels){
mJiverChatAdapter.addMessageModel(model);
}
mJiverChatAdapter.notifyDataSetChanged();
// 마지막 쿼리의 Max Timestamp를 기준으로 새롭게 도착한 메시지를 접속과 동시에 로드합니다.
Jiver.connect(mJiverChatAdapter.getMaxMessageTimestamp());
}
@Override
public void onError(Exception e){
}
});
리턴 받은 MessageModel 형태의 데이터는 Message로 강제 형변환 하여 사용할 수 있다.