Skip to content

✨ Feature: 근거리 교환 idle 타임아웃 · 전송 완료 피드백 · 전송 재시도 #1229

Description

@JEONG-J

📌 작업 목적

근거리 교환 화면이 "언제 끝나는지" "보냈는지" "실패하면 어떻게 되는지"를 다루지 않는다. 화면을 켠 채 두면 광고·스캔이 무기한 돌고, 내 명함이 상대에게 전달됐다는 신호는 코드가 받아 놓고도 버린다.

1) 전송 성공 이벤트를 버린다

  • UMCApp/Features/BusinessCard/Presentation/Sources/ViewModels/CardExchangeViewModel.swift:113case .advertising, .scanning, .sent: break
    .sent 는 "내 명함이 상대에게 갔다"는 유일한 신호인데 .advertising/.scanning 과 함께 무시된다. 사용자는 받기만 확인할 수 있고 보내기는 확인할 수 없다.

2) idle 타임아웃이 없다

3) 전송 재시도가 없다

  • UMCApp/Core/NearbyExchange/Sources/MPCTransport.swift:277-290 — 전송 실패 시 그대로 끝. 순간적인 연결 흔들림에도 교환이 통째로 실패한다

✅ 완료 조건

  • .sent 이벤트를 화면 상태로 반영 (「내 명함을 보냈어요」)
  • 교환 idle 타임아웃 도입 — 시간·동작(자동 종료/안내 후 연장) 확정 후 구현
  • 타임아웃 시 광고·스캔 확실히 종료 (배터리·주변 노출 중단)
  • 전송 실패 시 짧은 재시도 (횟수·백오프 확정)
  • 재시도 후에도 실패하면 원인별 안내 (실패 문구 고정 이슈와 연동)
  • idle 타임아웃·재시도 동작 테스트

🔗 관련 정보

Metadata

Metadata

Assignees

Labels

✨ Feature새로운 기능을 추가합니다.

Projects

Status
😝 Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions