투케이2K

23. (TWOK/LOGIC) [모바일] 웹뷰 (webview) 에서 http 통신을 사용해 파일 다운로드 (file download) 수행 로직 본문

투케이2K 로직정리

23. (TWOK/LOGIC) [모바일] 웹뷰 (webview) 에서 http 통신을 사용해 파일 다운로드 (file download) 수행 로직

투케이2K 2022. 10. 8. 12:56

[로직 정리]

정리 로직 : MOBILE (Android / Ios)

상태 : [모바일] 웹뷰 (webview) 에서 http 통신을 사용해 파일 다운로드 (file download) 수행 로직

 

[설 명]

[Android]

[1]. AndroidManifest.xml 부분에서 퍼미션 권한 설정 실시

- INTERNET (인터넷 사용)
- WRITE_EXTERNAL_STORAG (파일 쓰기)
- READ_EXTERNAL_STORAGE (파일 읽기)
- android:requestLegacyExternalStorage="true"
- android:usesCleartextTraffic="true"


[2]. A_Main 클래스 시작 부분에서 네트워크 연결 상태 체크 실시


[3]. 정상적으로 네트워크가 연결된 경우 웹뷰 로드 수행 실시 (연결되지 않은 경우는 팝업창으로 네트워크 연결 알림 확인 바람 표시)


[4]. 퍼미션 권한 요청 수행 실시


[5]. 웹뷰 <-> 네이티브 파일 다운로드 통신을 위해 자바스크립트 브릿지 경로 setFileDownLoad 생성 실시


[6]. 자바스크립트 통신 브릿지로 파일을 다운로드 해야하는 http 주소를 전달 받음 (ex:http://localhost:7000/TEST_IMG_DOWN)


[7]. 네이티브에서는 전달받은 데이터 널 체크 및 http 주소 형식이 올바른지 검증 실시 (CHECK URL), 퍼미션 권한이 정상적으로 부여되어 있는지 체크 실시


[8]. 퍼미션이 부여되어 있고, 주소 형식이 올바른 경우 http 통신을 사용해 파일 다운로드 [get] 방식 request 요청 실시

- Android : okhttp 라이브러리 사용
- Ios : URLsession


[9]. http 요청에서 정상적으로 onResponse 응답을 받은 경우 response header Content-Disposition attachment filename 파일 명칭 확인 실시


[10]. 파일 명칭을 파싱해서 >> DownloadManager 다운로드 매니저 사용해 setDestinationInExternalPublicDir DIRECTORY_DOWNLOADS  경로에 http 파일 다운로드 수행 실시 (파일 명칭 지정)








[Ios]

[1]. Info plist 에 접근 권한 설정 실시

- 아이폰 파일 접근 설정 : Supports opening documents in place : YES
- 아이튠즈 공유 설정 : Application supports iTunes file sharing : YES
- http 통신 허용 설정 : App Transport Security Settings >> Allow Arbitrary Loads >> YES


[2]. A_Main 클래스 시작 부분에서 네트워크 연결 상태 체크 실시


[3]. 정상적으로 네트워크가 연결된 경우 웹뷰 로드 수행 실시 (연결되지 않은 경우는 팝업창으로 네트워크 연결 알림 확인 바람 표시)


[4]. 웹뷰 <-> 네이티브 파일 다운로드 통신을 위해 자바스크립트 브릿지 경로 setFileDownLoad 생성 실시


[5]. 자바스크립트 통신 브릿지로 파일을 다운로드 해야하는 http 주소를 전달 받음 (ex:http://localhost:7000/TEST_IMG_DOWN)


[6]. 네이티브에서는 전달받은 데이터 널 체크 및 http 주소 형식이 올바른지 검증 실시 (CHECK URL)


[7]. 주소 형식이 올바른 경우 http 통신을 사용해 파일 다운로드 [get] 방식 request 요청 실시

- Android : okhttp 라이브러리 사용
- Ios : URLsession


[8]. http 요청에서 정상적으로 onResponse 응답을 받은 경우 response header Content-Disposition attachment filename 파일 명칭 확인 실시


[9]. FileManager 파일 매니저 사용해 애플리케이션 도큐먼트에 저장되는 경로 확인 및 [경로 + 파일 명칭] 저장 실시


[10]. FileManager write 쓰기 사용해 파일 저장 실시

 

반응형
Comments