场景:web中js通过messagehandler,调用原生方法录音,录音完成之后把文件给到前端环境,前端再做上传或者别的处理。
印象中都是base64传,前端环境下是访问不到本地沙盒路径的。然后搜索了一下,居然可以,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| ...
configuration.preferences.setValue(true, forKey: "allowFileAccessFromFileURLs") ... ... let tempDirectoryURL = URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true) let fileURL = tempDirectoryURL.appendingPathComponent(audioUrl.lastPathComponent) webView.loadFileURL(fileURL, allowingReadAccessTo: tempDirectoryURL) let js = String(format: "%@('%@')", recordCallbackFunc, fileURL.absoluteString) webView.evaluateJavaScript(js) { (result, error) in if let error = error { debugPrint("Error evaluating JavaScript: \(error)") } else { debugPrint("JavaScript executed successfully") } }
|