개발 slecs

원격 지원 WebSocket 연결 안정성과 Android 14 화면 공유

목차

WebSocket 핑 메시지 전송 및 타임아웃 설정 추가

2026-03-26에 WebSocket 관련 기능을 추가하거나 개선했음.

원격 지원 기능에서 WebSocket을 씀. 관리자가 화면을 보면서 실시간으로 기기 상태를 확인하는 구조임.

연결 구조

관리자 브라우저 <-> WebSocket 서버 <-> Android 

연결이 끊기는 경우를 대비해서 핑 메시지를 주기적으로 보내고, 응답이 없으면 연결이 끊긴 걸로 판단해서 재연결을 시도하게 했음.

// 핑 메시지 전송 예시
session.sendMessage(new TextMessage("ping"));

타임아웃 설정도 중요함. 너무 짧으면 정상 연결이 끊기고, 너무 길면 좀비 연결이 쌓임. 적절한 값을 실험해서 설정함.

다음

작업 규모는 크지 않았지만 운영 안정성을 위한 필요한 변경이었음. 이런 작은 수정들이 쌓여서 전체 시스템의 신뢰도를 높임.

MediaProjection Android 14+ 이슈

Android 14부터 MediaProjection을 재사용하려면 기존 세션을 명시적으로 종료하고 새로 요청해야 함. 이전 버전에서 쓰던 인스턴스 재사용 방식이 14+에서 크래시를 일으킴.

버전 체크로 분기해서 처리하거나, 아예 매번 새로 요청하는 방식으로 통일하는 게 안전함.

Android 알림 수신 서비스 구조

NotificationListenerService는 시스템이 재시작하면 자동으로 종료될 수 있음. START_STICKY를 반환해서 시스템이 강제 종료해도 재시작하도록 처리함.

Android 13+부터 알림 권한이 런타임 요청으로 바뀌어서 앱 최초 실행 시 권한 요청 다이얼로그를 보여주는 로직이 필요함.

배포 채널이 구글 플레이가 아닌 직접 APK 배포라서 자체 업데이트 체크 로직을 서버 API로 구현해둔 상태임.

다음

댓글 0

첫 댓글 달아줘.