iOS 10에서도 WKWebView를 사용하여 자체 점검을 시작하려고 합니다.
8959 단어 WKWebViewURLSessionSwiftiOS초보자
입문
초보자들이 가장 좋아하는 곳 중 하나로 꼽히는 웹뷰에 대한 이야기입니다.
iOS10이 WKWebView를 사용하여 자동 검사 요청을 할 때 httpBody가nil인 오류가 있는 것 같습니다.
오류에 대해 iOS10과 iOS11 또는 더 높은 버전에서 검증된 이 문장 은 이해하기 쉽다.
해결 방법은 참고했다이 문장.
전제 조건
XCode 10.2.1
Swift4
DeploymentTarget: iOS10
솔루션
이번은'시작'참고 보도에서 소개한'URLSessionDataTask에서 얻은 데이터를 WKWebView에 전달하는 다음과 같은 방법'으로 대응했다.
우선 URLSession에 요청을 보내는 처리를 추가합니다.
이번에는 데이터를 json 형식으로 보냅니다.
do-catch에서 요청 내용을 URLSessionDataTask에 전달하여 요청을 시작합니다.
ViewController.swift
@IBOutlet weak var webViewContainer: UIView!
private let url = "http://xxx.xxx.x.x"
override func viewDidLoad() {
super.viewDidLoad()
let config = URLSessionConfiguration.default
let session = URLSession(configuration: config, delegate: self, delegateQueue: nil)
var request = URLRequest(url: URL(string: url)!)
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
let params: [String: String] = [
"hoge": "hoge",
"huga": "huga"
]
do {
request.httpBody = try JSONSerialization.data(withJSONObject: params, options: .prettyPrinted)
let task = session.dataTask(with: request as URLRequest)
task.resume()
} catch {
print(error.localizedDescription)
}
}
URLSessionDataDelegate에서 URLSession에서 수신한 데이터를 WebView에 전달하는 과정을 실현합니다.UI 업데이트 처리이므로 마스터 스레드에서 수행해야 합니다.DispatchQueue를 사용하여 주 스레드에 WebView를 로드합니다.ViewController.swift
extension ViewController: URLSessionDataDelegate {
func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {
DispatchQueue.main.async(execute: {
let webView = WKWebView(frame: self.webViewContainer.bounds)
self.webViewContainer.addSubview(webView)
webView.load(data, mimeType: "text/html", characterEncodingName: "UTF-8", baseURL: URL(string: self.url)!)
})
}
}
웹 측면의 소스입니다.이번에는 로컬에서 XAMPP 를 사용하여 테스트합니다.
test.php
<?php
$json = file_get_contents('php://input');
echo $json;
결과
다음과 같이 매개변수가 표시됩니다.
총결산
iOS13이 발표되었지만 iOS10을 지원할 때 이 방법을 사용할 수 있습니다.다만 저는 iOS 경험이 없어서 이 설치 방법이 정확한지 모르겠습니다. 더 좋은 방법이 있다면 알고 싶습니다.
참고 자료
iOS(swift) Gawa 앱을 만드는 데 힘들었던 사연입니다.
iOS WKWebView의 3가지 걸림돌 및 해결 방법
스위치로 json을 켜서 php로 자동 검사합니다
Reference
이 문제에 관하여(iOS 10에서도 WKWebView를 사용하여 자체 점검을 시작하려고 합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/EitoSsk/items/e293510ad0a8b74f9775텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)