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 통신 구현
- 디바이스를 카드처럼 에뮬레이션
- 비밀번호 데이터 포함 Tag 생성
- 세션 기반 송신 구조 구성
- 제한: 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 → 1boolBefore0bool
After1bool
React Native NFC 한계 해결 — HCE 기반 통신 구조로 도어락 제어 구현 · Portfolio · Sojin Lee

