본문 바로가기
Android/기타 지식

[SendBird] SendBird Chat SDK 개발 문서 정리 - 1. 시작 하기

by jaesungLeee 2021. 7. 3.

1. 개요

이번 여름에 한 기업에서 인턴을 하게 되었다. 담당한 프로젝트는 SendBird API를 이용한 채팅 어플리케이션 개발이다. 인턴이라 그런지 회사에서 코어 업무는 당연히 시키지 않겠지만 내가 담당한 데모 프로젝트를 실제 회사 서비스에 적용할 예정이라고 해서 나름 책임감을 갖게 되었다. 무엇보다 아직까지 채팅 서비스를 구현해 본 적이 없었고 꼭 해보고 싶었던 프로젝트라 기대가 된다!

 

SendBird는 주로 채팅 API를 판매하는 미국의 SaaS (Software as a Service) B2B 회사이다. B2B 회사여서 그런지 일반 대중들에게는 인지도가 높지는 않지만 IT 계열 종사자들에게는 꽤 유명하다고 한다 (나도 첨 들어봤었음). 본사는 미국 실리콘밸리에 있지만 CEO와 공동 창업자가 한국인이다!

제공하는 서비스로는 Chat API, Voice/Video Call API, 고객센터 업무관리 용 Desk 가 있다. 이 중 나는 채팅 서비스 구현을 위해 Chat API를 사용한다.

 

SendBird 공식 홈페이지에서 안드로이드 개발자용 Documents를 보면 java로만 작성되어있다. kotlin으로 개발을 할 건데 암만 구글링 해봐도 보이지 않는다. 이번 기회를 통해 개발 문서를 내가 보기 편하게 kotlin으로 바꿔보고 지금까지 개발 문서를 날림으로만 읽고 개발했었는데 개발을 시작할 때 개발 문서를 꼼꼼히 읽어보는 습관을 들여보려 한다.

 

https://sendbird.com/docs/chat

 

Chat | Sendbird Docs

View core features of Sendbird Chat and find the links to documentation by platform.

sendbird.com

[안드로이드 뿐만 아니라 IOS, JS, Unity까지 다양한 파트를 지원한다.]

 

2. 최소 요구 사항

  • 안드로이드 4.1 버전 이상 (API Level 16)
  • Java 7 이상
  • Gradle 3.4.0 이상

 

3. SendBird Chat SDK 설치

  1. 대시보드 만들기
  2. Android Project에 Chat SDK 설치하기
    • build.gradle (project)
       repositories {
       	google()
       	jcenter()
       	maven { url "https://repo.sendbird.com/public/maven" }
       }​
      repositories안에 maven 라인을 추가
    • build.gradle (:app)
      dependencies {
       	implementation ('com.sendbird.sdk:sendbird-android-sdk:3.0.166)
       }​
      dependencies에 추가 (SDK 버전은 3.0.166이 21.07 기준 최신 버전임)
  3. Permission 추가하기
    • AndroidManifest.xml
      <uses-permission android:name="android.permission.INTERNET" />
      
      <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
       외장 메모리 Permission은 디바이스 내 파일 접근에 대한 속성임 (업로드, 다운로드)

 

4. 메시지 전송 절차

  1. Initialize Chat SDK
    SendBird.init(APP_ID, context);​
    • APP_ID는 Sendbird 대시보드에서 확인 가능하다.
  2. Connect to SendBird Server
    • 서버와의 연결은 항상 고유한 uid로 연결한다.
    • SendBird Server의 DB에 없는 uid는 신규 등록자, 있는 uid는 서버와 자동 연결된다.
    • SendBird.connect(USER_ID) { user, e -> 
      	// Handle Error
          // onResult
      }
  3. Create Channel (채팅 채널 생성)
    • Channel에는 크게 Open Channel, Group Channel이 있다. (자세한 내용은 다음 포스트에서)
    • OpenChannel.createChannel(USER_LIST) { openChannel, e ->
      	// Handle Error.
          // onResult
      }
      
      GroupChannel.createChannel(USER_LIST) { groupChannel, e ->
      	// Handle Error.
          // onResult
      }
      • createChannel()의 parameter로는 User의 List가 들어간다.
      • 채널 생성 시 채널 고유의 URL이 생성되고 여기로 Intent 시켜야 실제 채팅이 가능해진다.
        • intent.putExtra(TAG, groupChannel.url)
  4. Enter the channel
    • 메시지를 보내고 받기 위함
    • OpenChannel.getChannel(CHANNEL_URL) { openChannel, e ->
      	// Handle Error.
          
          openChannel.join{  }
      }
      
      GroupChannel.getChannel(CHANNEL_URL) { groupChannel, e ->
      	// Handle Error.
          
          groupChannel.join{  }
      }
  5. Send a message to the channel
    • 접속까지 했으면 이제 메시지를 보낼 수 있다.
    • 메시지의 종류로는 크게 User Message, File Message가 있다. (마찬가지로 다음 포스트에서)
    • openChannel.sendUserMessage(MESSAGE) { userMessage, e ->
      	// Handle Error.
          // onResult
      }
      
      groupChannel.sendFileMessage(MESSAGE) { fileMessage, e ->
      	// Handle Error.
          // onResult
      }