LINE 앱에서 웹 엔지니어 없이 그룹 영상 통화 서비스 만들기
웹 엔지니어 없이 PM과 Android 엔지니어만으로 LINE 앱 내 그룹 영상 통화 서비스 개발을 성공적으로 완료함
LIFF(LINE Front-end Framework)와 LINE Planet SDK를 활용하여 LINE 인증, WebRTC 미디어 처리, 글로벌 네트워크 인프라를 추상화함
React와 Vite 기반 웹 앱 개발, Firebase Cloud Functions를 이용한 앱 서버 구축으로 신속한 서비스 개발 가능성을 입증함
통화 셋업, 미리보기, LINE 친구 초대 등 핵심 구현 포인트를 상세히 공유하며 LINE 생태계 기반 서비스 개발의 출발점을 제시함
LIFF와 LINE Planet SDK를 통한 개발 간소화
본문에서는 LIFF(LINE Front-end Framework)와 LINE Planet SDK가 복잡한 기술 스택을 추상화하여 개발 부담을 크게 줄여준다고 설명한다. LIFF는 LINE 앱 내에서 웹뷰를 관리하고 LINE 로그인 정보(userId, displayName)를 자동으로 전달하여 별도의 인증 서버 구축 필요성을 제거한다. 또한 LINE Planet SDK는 WebRTC 기반의 실시간 통신 인프라를 추상화하여 개발자가 미디어 처리나 네트워크 트래버설(network address translation traversal)을 직접 구현할 필요 없이 그룹 영상 통화 기능을 신속하게 통합할 수 있도록 지원한다. 이러한 추상화 덕분에 웹 엔지니어 없이도 PM과 Android 엔지니어만으로 서비스 개발이 가능했다.
미리보기 화면에서의 미디어 스트림 관리
그룹 영상 통화 서비스 개발 시, 미리보기 화면에서 카메라와 마이크 상태를 확인하는 과정은 중요하며, 이 과정에서 PlanetKit SDK의 MediaStreamManager(MSM)가 핵심적인 역할을 수행한다. MSM 인스턴스를 미리 생성하고 페이지 전환 시 재사용함으로써, 사용자는 카메라 및 마이크 권한을 다시 요청받지 않아도 된다. 특히 모바일 환경에서 전/후면 카메라 전환 시 User Agent(UA) 기반으로 기기 여부를 판별하고, `enumerateDevices()` API를 통해 카메라 라벨을 매칭하여 deviceId를 역산하는 방식은 사용자 경험을 저해하지 않으면서도 안정적인 카메라 전환을 지원한다. 이는 권한 재요청 방지와 모바일 환경에서의 UI 일관성 유지에 기여한다.
앱 서버와 LINE Planet SDK 연동을 통한 통화 참가
LINE Planet SDK를 이용한 그룹 통화 참가를 위해서는 사용자 정보와 LINE Planet 액세스 토큰이 필요하다. 사용자 정보는 LIFF SDK를 통해 LINE 로그인 시 자동으로 획득 가능하며, 액세스 토큰은 별도로 구축한 앱 서버(Firebase Cloud Functions 활용)를 통해 발급받는다. 앱 서버는 클라이언트로부터 받은 LINE 인증 정보를 바탕으로 LINE Planet 서비스 ID와 함께 액세스 토큰을 요청하고 발급하는 역할을 담당한다. 이렇게 준비된 사용자 정보와 액세스 토큰, 그리고 미리 준비된 MediaStreamManager 인스턴스를 `joinConference` 메소드에 전달함으로써, 개발자는 복잡한 인증 및 미디어 스트림 설정을 간소화하고 LINE Planet의 실시간 통신 인프라에 쉽게 참가할 수 있다.
동적 그리드 레이아웃 및 해상도 조절 전략
그룹 통화 화면에서 참가자 수가 변동함에 따라 동적으로 그리드 레이아웃과 영상 해상도를 조절하는 것은 사용자 경험과 네트워크 대역폭 관리에 중요하다. LINE Planet SDK는 `evtPeerListUpdated` 콜백을 통해 참가자 목록 변경을 알려주며, 이를 기반으로 그리드 셀 수를 재배치하고 각 참가자의 영상 해상도를 요청한다. 참가자 수에 따라 VGA 또는 qvga와 같은 해상도를 선택적으로 적용하여 대역폭과 디코딩 부담을 줄이는 전략은 네트워크 효율성 증대에 기여한다. 모바일 환경에서는 화면 제약으로 인해 최근 발언자를 우선 표시하는 등 UI/UX 최적화가 추가로 고려될 수 있다.
LINE 친구 초대 기능 구현 및 고려사항
LINE 친구 초대 기능은 LIFF의 `shareTargetPicker` API를 활용하여 구현된다. 이 API는 사용자가 LINE 친구에게 메시지를 보내고, 메시지에는 통화방 ID가 포함된 초대 링크가 포함된다. 초대 링크를 클릭하면 LIFF 앱이 열리면서 해당 방 ID로 자동 참가되도록 설계된다. 이 기능을 사용하기 위해서는 LINE Developers Console에서 LINE Login 채널을 Published 상태로 설정해야 하며, `isMultiple: true` 옵션을 통해 여러 친구에게 동시 초대가 가능하도록 구현할 수 있다. 이는 서비스의 확산성(Virality)을 높이는 효과를 기대할 수 있다.