오답노트
- ❌ "navigationAction과 navigationResponse는 같은 시점" → action=요청 나가기 전, response=응답 받은 후
- ❌ "로딩 실패는 didFail" → 대부분 커밋 전 실패라 didFailProvisionalNavigation. didFail은 커밋 후(드묾)
- ❌ "새 창 열기도 NavigationDelegate에서" → 새 창은 WKUIDelegate(§4). targetFrame nil로 감지만
- ❌ "didCommit = 로드 완료" → 본문 도착 시작+표시 확정(옛 페이지 교체 시작). 완료는 didFinish
- ❌ "decisionHandler 안 불러도 됨" → 반드시 1회 호출, 안 부르면 웹뷰 멈춤
- ❌ "네비게이션은 사용자 클릭으로만" → JS가 location.href로 프로그램 이동 가능(.other). navigationType으로 구분
📘 §2 후속 Q&A 12문항 정리됨(앱 프로세스 판단·decisionHandler·navigationResponse·provisional/commit 의미·리다이렉트 조건·커밋 후 실패·JS 프로그램 이동·체크질문 답) → 웹뷰 §2
📘 §2 실전 후속: 리다이렉트 콜백 파라미터(WKNavigation만)·navigationResponse=헤더만·didCommit 역할·.download 전환(WKDownloadDelegate, iOS14.5+)·iOS14 blob 다운로드 우회(JS FileReader→base64→postMessage→네이티브 저장) → 웹뷰 §2