React Native NFC 한계 해결 — HCE 기반 통신 구조로 도어락 제어 구현
개발
2022. 06 - 2022. 09

React Native NFC 한계 해결 — HCE 기반 통신 구조로 도어락 제어 구현

React Native NFC 송신 제한 문제 해결. HCE 기반 구조 도입으로 안드로이드 디바이스 간 통신 구현 및 프로토타입 완성. 연세대학교 대학원 연구팀의 외주 개발 프로젝트.

핵심 기능 구현

40% 기여

NFC 기반 도어락 제어

기술 제약 해결

HCE 적용

RN 환경 한계 극복

JavaScriptRecoilReact NativeExpo
모바일 앱 개발NFC 통신 구조 설계상태 관리 설계외주 협업

Overview

React Native 환경의 NFC 송신 불가 문제 → HCE 기반 구조로 재설계하여 디바이스 간 통신 구현

NFC 통신 구조 설계

읽기 전용 환경 → HCE 기반 송신 구조 전환

상태 기반 UI

Recoil로 모달·유효성 상태 통합 관리

OS 레벨 대응

Android NFC 프로토콜 직접 분석

협업 기반 의사결정

기술 제약 발생 → 클라이언트 협의로 재조정

Problem

NFC 통신 불가
  • NFC 태깅을 통한 비밀번호 전송 실패
  • 데이터 수신만 가능, 송신 불가
  • → 핵심 기능(도어락 제어) 구현 불가 상태 지속

Solution

NFC 송신 구조 변경
  • 원인: React Native NFC = 읽기 전용
    → NDEF 기반 라이브러리 한계
    → Android AID selection 미지원
    → 네이티브 레벨 접근 불가
  • 해결 방향: NFC 기능 수정이 아니라 구조 변경
HCE 기반 전환
  • 디바이스를 “카드”로 동작하도록 설계
    • Reader → Card 구조로 역할 분리
    • Android HCE 적용

Implementation

HCE 기반 NFC 통신 구현
  1. 디바이스를 카드처럼 에뮬레이션
  2. 비밀번호 데이터 포함 Tag 생성
  3. 세션 기반 송신 구조 구성
  • 제한: AID selection 불가 → 선택적 통신 제어 제한
  • 대응: 통신 범위 단순화 → 기능 요구 최소 충족
    • → 클라이언트 협의 후 제한 조건 수용
상태 관리 구조 설계
  • 문제: 다수 모달 + 시간 조건 상태 분산
  • 해결: Recoil 전역 상태 도입
  • 구현: 상태별 atom 분리 → custom hook으로 UI 제어
  • 결과: UI 상태 흐름 통합 → 조건별 액션 처리 단순화

Problem Solving

기술 문제 → 협업 문제로 확장
  • 문제: RN 환경에서 NFC 송신 불가
  • 원인: 라이브러리 한계 + OS 제약
  • 해결: HCE 구조 제안 → 클라이언트 협의
  • 결과: 기능 구현 가능 상태 확보
  • 인사이트: 기술 선택은 협의 대상
디버깅 방향 전환 — 코드 → OS레벨
  • 문제: 통신 실패 원인 불명확
  • 원인: 코드가 아니라 플랫폼 제약
  • 해결: OS 레벨 분석 → 구조 변경
  • 결과: 문제 원인 명확화 → 해결 속도 증가
  • 인사이트: 디버깅은 범위 정의부터!

Insight

기술 선택 기준 변화
  • 기존: 구현 가능 여부
  • 이후:
    • 운영 환경
    • 플랫폼 제약
    • 확장 가능성

Result

Outcomes

  • NFC 통신 구현 성공 — RN 환경 제한 극복 → 기능 요구 충족

  • 통신 구조 변경 — HCE 적용 → 디바이스 간 송신 가능 상태 확보

  • 상태 관리 구조 정리 — Recoil 도입 → UI 일관성 유지 및 유지보수 비용 감소

Before / After Metrics

NFC 통신 가능 여부

0bool → 1bool
Before0bool
After1bool

React Native NFC 한계 해결 — HCE 기반 통신 구조로 도어락 제어 구현 · Portfolio · Sojin Lee