0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JIVER ?

Last updated at Posted at 2015-07-31
  • 간단히 채팅기능을 구현할 수 있도록 도와주는 채팅 솔루션 플랫폼

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로 강제 형변환 하여 사용할 수 있다.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?