사이드프로젝트 slecs

Android 결제 알림 앱 호환성·안정성 개선

목차

v2.0.0: 인증코드 입력 UX 개선 및 버전 업데이트

Android 앱(v2.0.0) 관련 작업을 진행했음.

결제 알림 수신·처리용 앱인데, 알림 캡처 → 파싱 → 서버 전송 흐름으로 동작함. 이번 작업에서는 안정성과 Android 버전 호환성을 중점적으로 개선했음.

주요 변경

항목 내용
Android 14/15 대응 MediaProjection API 변경사항 반영
원격 지원 안정화 WebSocket 연결 유지 및 재연결 로직 보강
FCM 처리 알림 수신 서비스 로직 개선

알림 캡처 로직은 NotificationListenerService를 기반으로 하고, 캡처한 텍스트를 정규식으로 파싱해서 금액·은행 정보를 추출함. 파싱 실패 시 AI 폴백으로 재시도하는 구조도 붙어 있음.

Android 버전마다 권한 처리 방식이 달라서, 특히 Android 13+ 이후 알림 권한이 런타임 요청으로 바뀐 부분을 처리하느라 손이 많이 갔음.

override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
    return START_STICKY
}

배포 시에는 keystore 서명 설정을 로컬 local.properties에 분리해서 레포에 올라가지 않게 관리 중임.

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

연락처 송금 안정성 확보 전략

은행 앱 UI는 앱 업데이트마다 바뀔 수 있음. 하드코딩된 셀렉터는 앱 버전이 올라가면 갑자기 동작을 멈춤. 자가학습 캐시 구조가 이 문제를 완화함.

성공한 셀렉터를 DB에 저장해두고, 다음 요청에서는 저장된 셀렉터를 먼저 시도함. 실패하면 전체 탐색으로 폴백하고, 성공한 새 셀렉터를 다시 저장함.

  • PENDING: 처리 중
  • SUCCESS: 완료
  • NO_MATCH: 주문 매칭 실패 → 재시도 큐
  • MANUAL_REQUIRED: 자동 처리 불가 → 수동 처리

다음

댓글 0

첫 댓글 달아줘.