WKWebView에서 H5는 카메라를 꺼서 처리할 사진을 가로채고 다시 H5 메서드로 돌아갑니다.
WKWebView를 사용하여 iOS에서 H5 페이지를 로드할 때 기기의 카메라를 호출하여 사진을 찍거나 H5 페이지에서 처리할 사진을 선택하고 처리된 결과를 H5 페이지로 반환해야 하는 경우 다음 구현 단계를 따를 수 있습니다.
iOS 네이티브 코드에서 H5 페이지와 상호작용하는 JavaScript 호출 인터페이스를 만듭니다. 이 인터페이스는 WKWebView의 WKScriptMessageHandler 프로토콜을 사용하여 구현할 수 있습니다. 예:
class MyScriptMessageHandler: NSObject, WKScriptMessageHandler {
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name = = "takePhoto" {
// 여기에서 사진 로직을 처리하고, 사진을 가져와서 처리합니다.
let receivedImage = processImage()
// 처리합니다. 사진 결과는 H5 페이지로 반환됩니다.
let script = "handlePhotoResult('\(processedImage)')"
webView.evaluateJavaScript(script,completeHandler: nil)
p>}
}
}
WKWebView를 생성할 때 WKUserContentController를 설정하고 여기에 위의 JavaScript 호출 인터페이스를 추가하세요.
let userContentController = WKUserContentController()
let scriptMessageHandler = MyScriptMessageHandler()
userContentController.add(scriptMessageHandler, name: "takePhoto")
let 구성 = WKWebViewConfiguration( )
configuration.userContentController = userContentController
let webView = WKWebView(frame: .zero,configuration:configuration)
H5 페이지에서 위의 JavaScript 인터페이스를 통해 사진을 찍거나 사진을 선택하는 작업을 실행할 수 있습니다.
예:
function takePhoto() {
window.webkit.messageHandlers.takePhoto.postMessage(null);
}
function handlerPhotoResult(result) {
// 여기에서 네이티브 코드에서 반환된 사진 결과를 처리합니다.
console.log('처리된 사진:', result);
}
위 코드에서 takePhoto 함수는 사진 작업을 트리거하는 데 사용됩니다. 이 함수는 window.webkit.messageHandlers.takePhoto.postMessage(null)를 통해 네이티브 코드에서 takePhoto 메서드를 호출합니다. 네이티브 코드의 processImage 메소드를 이용해 사진을 처리하고, 처리된 결과는 handlerPhotoResult 함수를 통해 H5 페이지로 반환됩니다.
위 단계를 통해 사진을 찍거나 사진을 선택하고 처리 결과를 H5 페이지로 반환하는 등 WKWebView의 H5 페이지와 상호 작용할 수 있습니다. 실제 필요에 따라 적절한 조정 및 처리를 수행하십시오.