swift wkwebview 파일 다운로드

안녕하세요, iOS WKWebView를 사용 하 여 내 응용 프로그램에서 웹 사이트를 로드 에 대 한 사용자 지정 렌더러와 Xamarin Forms WebView를 사용 하 고 있습니다. 이 문제는 사용자가 파일을 다운로드하기 위해 URL을 클릭할 때 발생하며 WKWebView는 아무 것도 하지 않습니다. 이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 사전에 감사합니다. Swift 코드 예제 페이지에서 더 많은 Swift 코드 예제를 확인합니다. 하나의 웹 페이지를 로드하는 것은 일부 HTML을 가져오고, 사용하는 JavaScript 및 CSS를 다운로드하고, 이미지를 다운로드하는 등의 것을 의미합니다. 나는 우리가 HTML 콘텐츠를 표시하기 위해 UIWebview를 사용하는 응용 프로그램이 있습니다. 해당 페이지에는 PDF링크가 있으며, 터치시 UIWebview 내부에서 PDF가 열립니다. 웹뷰 내부에서 열지 않고 PDF를 로컬로 다운로드할 수 있는 방법이 있습니까? 웹 아카이브는 정적 콘텐츠에서만 잘 작동합니다. 웹 페이지가 JavaScript를 통해 리소스를 동적으로 로드해야 하는 즉시 백 엔드를 가상으로 복제하지 않고 해당 페이지를 단일 파일로 보관할 수 있는 방법은 없습니다. 또한 아카이브는 정적으로 연결된 리소스에 대해 자바스크립트를 스캔하지 않습니다. 하지만 CSS 파일을 스캔하여 이미지 URL을 검색합니다. http://stackoverflow.com/questions/16392420/how-to-download-files-from-url-and-store-in-document-folder WKWebView는 loadFileURL() 방법을 사용하여 앱 번들에 저장된 모든 HTML을 로드할 수 있습니다. 번들에 있는 것으로 알고 있는 일부 HTML 파일에 대한 URL과 웹 보기를 읽을 수 있도록 허용하려는 다른 파일을 저장하는 다른 URL을 제공해야 합니다.

이 짧은 코드 예제를 통해 원격 URL에서 큰 파일을 다운로드하는 방법을 공유하려고합니다. 이미지 파일, 비디오 파일 또는 ZIP 아카이브 또는 큰 크기일 수 있습니다. WKWebView의 Swift 5에서 로컬 파일(CS 및 이미지 포함)을 로드하고 자바스크립트와 스위프트 간에 호출하는 예제입니다. init(프레임:구성:)을 사용하여 새 WKWebView 개체를 만든 후 웹 콘텐츠를 로드해야 합니다. 로드HTMLString(_:baseURL:) 사용 메서드는 로컬 HTML 파일 또는 로드(_:) 로드를 시작합니다. 웹 콘텐츠 로드를 시작하는 메서드입니다. stopLoading() 메서드를 사용하여 로드를 중지하고 isLoading 속성을 사용하여 웹 뷰가 로드 중인지 확인합니다. 웹 콘텐츠 로드를 추적하기 위해 WKUIDelegate 프로토콜을 준수하는 개체에 대리자 속성을 설정합니다.

프로그래밍 방식으로 WKWebView를 만드는 예제는 목록 1을 참조하십시오. 실제 작업을 수행하는 재사용 가능한 프레임워크입니다. 주요 방법 WebArchiver.achive (…) URL 및 선택적으로 쿠키의 목록을 합니다. 아카이브는 기본 HTML 문서와 연결된 모든 HTML, CSS, 자바 스크립트 * 및 이미지 리소스를 다운로드합니다. 그런 다음 모든 리소스가 단일 .webarchive 파일(이진 PLIST 파일)에 보관됩니다. 웹 아카이브 형식의 공식 문서는 없는 것 같지만 Safari에서 만든 아카이브 파일에서 관련 키 이름을 재구성할 수 있습니다. 보관기는 HTTP 요청을 병렬화하지만 응답을 처리하기 위해 단일 직렬 큐에서 작동합니다. 해당 url.deletingLastPathComponent() 부분은 help.html이 포함된 디렉터리에서 읽을 수 있는 WebKit을 알려줍니다. 코드에서 HTML을 생성하고 WKWebView에 직접 공급할 수 있습니다. 예를 들어, 이 제목 메시지를 표시: 마지막으로, 원하는 만큼 WKUIDelegate의 선택적 메서드를 구현 합니다.

예를 들어 모든 웹 페이지에서 alert() JavaScript 함수를 사용할 때 WKWebView에서 사용자 지정 경고 컨트롤러를 표시할 수 있습니다. 유일한 종속성은 HTML 파서 Fuzi입니다. 그런 다음 loadView() 메서드를 재정의하여 뷰 컨트롤러의 뷰에 할당합니다. 다행히 WKUIDelegate 프로토콜을 사용하여 개체를 웹 뷰의 UI 대리자로 설정하고 사용자 지정 경고를 표시하고 사용자 탭을 관리하는 등의 사항을 변경할 수 있습니다.