Android Developer

Android Zoom Meeting SDK : 1. 데모앱 살펴보기

졸려질려 2022. 6. 24. 19:25
반응형

공식 문서 URL : https://marketplace.zoom.us/docs/sdk/native-sdks/introduction

1. Zoom Meeting SDK

 Zoom Meeting SDK 는 Zoom Client App 에서 사용 가능한 기능들을 손쉽게 개발 중인 애플리케이션으로 적용할 수 있도록 해준다. 주요 Native Platform 에서 모두 사용 가능하며, Zoom Meeting SDK 가 가지는 특징은 다음과 같다.

- Easy to use : 간단한 라이브러리와 패키지를 통해 Zoom Meeting 기능을 빠르게 구현할 수 있다.
- Localizable : 다양한 국가의 언어들을 지원하고, 열린 통역확장성을 통해 국제적으로 사용 가능한 앱을 만들 수 있다.
- Customizable : 커스텀 UI 기능들을 통해 개발자는 Meeting 인터페이스를 확장하고 조정하여 앱과 직접 통합할 수 있다.
!! Zoom SDK 기능과 배포된 Zoom Client App 의 기능은 동일하지 않을 수 있다.

 Zoom SDK 를 활용하기에 앞서, Zoom 계정과 Zoom Access Key(ZAK) 가 필요하다. ZAK 는 회의를 호스팅하는 앱에서 필요한 인증 토큰이자 Unique Identification 역할을 한다.

 Zoom Meeting SDK 가 지원하는 플랫폼 및 프레임워크는 다음과 같다.

Zoom Meeting SDK 는 멀티 쓰레드 프로그래밍을 적용하지 않는 것을 추천한다.

2. Zoom SDK Credential

 SDK 를 사용하기에 앞서, Access Credential Key 이 필요하다. 발급 받는 방법은 간단하다.

1) Zoom Marketplace 로그인

 기본 Zoom 계정으로 로그인이 가능하다.

2) [Develop] -> [Build App]

 로그인 후에 계정 정보 옆에 [Develop] 메뉴를 클릭한 후, 드랍다운 된 메뉴 중에 [Build App] 를 클릭한다.

3) [SDK] -> [Create]

 현재 필자는 이미 SDK 앱을 등록한 상태라 [Create] 버튼이 없지만, 처음 들어가게 되면 [Create] 버튼이 "View here" 자리에 위치해 있다. [Create] 를 클릭하면, 팝업이 하나 나타나고, 그 안에 SDK 를 적용할 앱 이름(추후에 Zoom Marketplace에 배포할 때 드러낼 이름) 등을 적는다. 그리고 해당 팝업 맨 아래에 "추후에 Zoom Marketplace 에 배포할 것인지" 체크하는 체크박스가 있는데, 필자는 테스트용으로 사용해볼 목적이라 체크를 해제했다.

4) 필수 정보 입력

 SDK 정보 페이지로 들어가게 되면, [Information] 페이지가 나타난다. 해당 페이지를 쭉 살펴보다보면, 빨간색으로 표시된 필수 입력 칸들이 있다. "Company name", "Developer Name", "Developer Email Address" 를 각각 입력해준 후에 맨 하단의 [Continue] 버튼을 클릭한다.

5) SDK 다운로드

 위에 [Information] 에서 필수 정보들을 입력했다면, [Download] 페이지에서 각 플랫폼에 맞는 SDK 를 다운받을 수 있다. Android App 에 SDK 를 적용하기 위해 Android 에 맞는 SDK 를 다운로드 받았다. 다운로드를 받은 후에 맨 하단의 [Continue] 버튼을 클릭한다.

6) Credentials 확인

 [Download] 페이지 다음은, [App Credentials] 페이지이다. 해당 페이지에서 "SDK Credentials" 와 "OAuth Credentails" 정보를 확인할 수 있다. 


3. Getting Started

3-1) Prerequisites


3-2) Install SDK

 SDK 파일을 다운로드 하는 방법은 위 "2. Zoom Credential" 파트에서 기술되어있다. 이번 파트에서는 다운로드 방법 외에 다른 것들을 기술한다.

1. Verify Files

 다운받은 SDK 압축 파일을 풀면 아래와 같은 파일들이 포함되어있다. 아래 리스트에 있는 파일 목록에서 누락된 것이 있거나 다른 파일 구조를 나타내고 있다면, 다시 다운로드 받는 것이 좋다.

.
├── CHANGELOG.md
├── LICENSE.md
├── README.md
├── docs
├── [mobilertc-android-studio] <- Libraries and examples are inside.
├── proguard.cfg
└── version.txt

2. Version Number

 다운받은 SDK 의 Version 이 궁금하다면, 파일 중 "version.txt" 파일을 확인하면 된다. 필자가 현재 다운 받은 SDK 의 버전은 "v5.10.6.6361" 이다. Version 정보는 SDK 관련 질문이나 지원 정보를 얻고자 할때 필요하다.

3. Load the project

 다운받은 SDK 파일 목록 중, "mobilertc-android-studio" 프로젝트를 Android Studio 에서 열어본다. "mobilertc-android-studio" 폴더 자체를 프로젝트로 열어준다.

 프로젝트를 열고,  Gradle Sync 까지 완료되면 아래와 같이 프로젝트 구조를 볼 수 있다.

 그 안에는 두 가지의 Demo App 들이 존재한다.

  • sample : Login user 와 Non-login user 를 위한 기본 기능들이 담긴 데모 앱
  • example2 : Login credentials 없이 미팅을 참여하는 방법을 보여주는 데모 앱

 이후 기술되는 글들은 "sample" 데모 앱에 기반하여 기술된다. Login user 와 Non-login user 의 차이는 다음과 같다.

  • Login User : Zoom credential 로 로그인한 유저. Login user 는 예약 회의, 즉석 회의, 회의 관리 등을 할 수 있다.
  • Non-login User : 로그인 필요 없이 예약 회의를 시작하거나 참여할 수 있다. Login user 에 비해 제한되는 기능이 있다.


3-3) Enter your credentials

 SDK key 와 secret 은 Zoom 을 사용하기 위해 필수적인 요소들이다. credential 정보를 통해 어떤 애플리케이션이 Zoom SDK 를 사용하는지 알 수 있기 때문이다. Zoom 으로 인증하기 위해서는 SDK key 와 secret 을 사용해서 JWT 를 생성 해야한다.

 "sample" 앱에서 JWT 를 입력하는 interface 가 존재한다. 다음 과정을 통해 JWT 를 데모 앱에 입력하면 된다. 다만, Test 용도가 아닌 Production 을 준비 중인 앱이라면, 지금 방법처럼 JWT 정보를 앱 내에 하드코딩 해서는 안된다.

1. sample 앱 모듈에서 initsdk 패키지 내에 "AuthConstants.java" 파일을 연다.

2. JWT 값을 "SDK_JWTTOKEN" 변수에 넣어준다.

 JWT 를 생성하는 방법은 위 "AuthConstants.java" 파일의 주석에 기술되어있다. 먼저, 생성했던 SDK 페이지로 들어가서 SDK key 와 SDK secret 값이 필요하다. 두 값은 "jwt.io" 페이지에서 JWT 를 생성할 때 필요하다.

 "jwt.io" 페이지로 접속한다. 접속해서 아래로 스크롤을 하면, 웹페이지 내에서 JWT 를 생성할 수 있는 Debugger 부분이 나온다.

 크게 왼쪽의 [Encoded] 부분과 오른쪽에 [Decoded] 부분으로 나뉘어있다. [Encoded] 부분은 생성된 JWT 값으로, Zoom SDK 를 사용할 때 넣어야할 SDK_JWTTOKEN 값이다. [Decoded] 부분은 JWT 를 생성하는 데 필요한 값들로, 아까 준비한 SDK key 와 secret 값은 여기에서 사용된다.

 [Decoded] 의 HEADER 부분은 그대로 사용하면 된다. 만약 값이 다르다면 바꿔주도록 한다.

{
    "alg": "HS256",
    "typ": "JWT"
}

 [Decoded] 의 PAYLOAD 부분은 Zoom 에서 규정한 PAYLOAD 값에 맞게 변경해준다. AuthConstants.java 파일에서도 봤듯이, 아래와 같은 형식으로 작성한다.

 {
    "appKey": "string", // app key
    "iat": long, // access token issue timestamp
    "exp": long, // access token expire time
    "tokenExp": long // token expire time
}
  • "appKey" 는 Zoom 의 SDK 페이지에서 "SDK key" 값을 문자열 형식으로 넣는다.
  • "iat" 는 현재 시간을 long 타입으로 넣는다.
  • "exp" 는 JWT 의 만료 시간을 long 타입의 값으로 넣는다.
  • "tokenExp" 는 "exp" 값과 똑같이 넣는다.

 본래 JWT 값은 Zoom 회의를 생성하거나 참석할 때마다 생성해야한다. 그래서 코드 베이스로 JWT 를 생성할 수 있도록 위와 같이 PAYLOAD 가 구성된 것으로 보인다. 하지만, 지금은 데모 앱을 실행시켜보는 것이 목적이므로, 고정된 long 타입의 Time 값을 넣어주도록 한다. 코드로 짤 필요 없이, 웹페이지에서 Timestamp 값을 얻는 방법이 있다.

 

Epoch Converter

Convert Unix Timestamps (and many other date formats) to regular dates.

www.epochconverter.com

 위 페이지에 접속하여 현재 시간과 원하는 시간(만료 시간)의 Timestamp 를 복사한다.

 상단의 "The current Unix epoch time is ~" 의 timestamp 값을 PAYLOAD 에서 "iat" 의 value 로 넣어준다. 하단의 "Epoch timestamp" 값은 바로 위의 원하는 시간을 설정한 후에 [Human date to Timestamp] 버튼을 클릭하면 생성되니, 복사하여 PAYLOAD 에 "exp" 와 "tokenExp" 의 value 로 넣어준다. 다음과 같이 구성한다.

  이제 "appKey" 의 value 만 입력하면 PAYLOAD 부분은 완성이다. 위에서 말했듯, "appKey" 에는 "SDK key" 값을 넣어준다.

 문자열이니 ""(큰따옴표) 로 감싸서 SDK key 값을 넣어주도록 한다. 이 외에 Zoom SDK 를 사용하는 플랫폼에 따라 PAYLOAD 의 구성이 다르다. 본 글에서는 Android 기준으로 작성하고 있지만, 다른 OS 에서의 PAYLOAD 구성이 궁금하다면 공식문서를 참고하면 된다.

 [Decoded] 의 VERIFY SIGNATURE 부분은 입력할 수 있는 공간인 "your-256-bit-secret" 에 "SDK secret" 값을 넣어준다.

 위 일련의 과정을 모두 거쳐서 [Decoded] 부분을 모두 채운다면, [Encoded] 부분에 JWT 값이 생성될 것이다. 생성된 값을 "AuthConstant.java" 파일의 "SDK_JWTTOKEN" 변수에 넣어준다.

 이로써 JWT 를 생성하고, 앱 내에 입력하는 것까지 모두 마쳤다. 이제 실행만 남았다.


3-4) Build, Run, Play

 위에 "SDK_JWTTOKEN" 을 알맞게 초기화 해주었다면, [RUN] 만 해도 앱이 실행된다. App Module 은 "sample" 로 설정한다.

 위 화면이 나온다면 성공적으로 앱을 빌드하고, 실행한 것이다. 만약, "Zoom Sdk Sample" 문구만 나오고 아래에 위젯들이 나타나지 않았다면, 에러가 발생한 것이다. 화면에 나타나는 Toast 나 Run, Logcat 을 살펴서 ErrorCode 를 알아내도록 한다. Error Code 에 대한 공식 문서 링크를 첨부한다. ( 링크 : https://marketplace.zoom.us/docs/sdk/native-sdks/iOS/resource/error-codes/ )

 만약 Android Emulatoer 에서 [INSTALL_FAILED_NO_MATCHING_ABIS] 오류로 인해 앱이 실행되지 않는다면, Zoom SDK 와 호환되는 Emulator ABI arm series 가 맞지 않기 때문이다. 자세한 사항은 공식문서를 참고한다.

 이제 앱으로 회의가 잘 되는지 확인해보자. 먼저, Zoom 홈페이지에 들어가서 회의를 생성한다. 아래 사진은 macOS 에서 Zoom 프로그램을 실행한 화면이다.

 이제 초대 코드를 생성해서 Emulator 에서 접속할 수 있도록 한다. 먼저, 초대 코드는 하단의 [참가자] 에서 추가 메뉴 중 [초대] 를 클릭한다. 그러면 새로운 팝업이 나타나고, 그 안에서 "Meeting number" 와 "회의 암호" 를 확인한다.

 위에 "94416775919" 가 Meeting number 이다. 해당 값을 Android App 으로 돌아가서, "Input Meeting number" 에 입력한다. 그리고, 바로 아래에 있는 "Input user name" 은 원하는 이름 값을 넣어준다.

 그리고 [Join Meeting] 버튼을 누르면, 데스크탑에서 생성한 회의실로 이동한다.

 회의에 암호가 설정되어 있어서 위와 같이 암호 입력 팝업이 나타난다. Meeting number 와 함께 확인했던 "회의 암호" 를 여기에 입력한다.

 회의실에 데스크탑 User 와 sample 앱의 User 가 같이 참석해있는 것을 확인할 수 있다.


 이렇게 Zoom SDK 에 대해 간단히 알아보고, 데모 앱 중 하나인 "sample" 앱을 실행시켜보았다. 원래는 본 글에 Zoom SDK 를 응용하는 것까지 넣으려 했으나, Introduction 부분이 워낙 양이 많아서 다음 글에서 Integration 하는 부분을 정리한다.

반응형