WKWebView 无法在加载的网页中触发 javascript。
场景:如果用户单击网站中的图像,它应该得到更新。
如果用户单击图像,则使用 javascript 更新网站上的图像。
JS 文件中的函数如下:
function captureImage(bucket,fileName){
window.webkit.messageHandlers.captureImage.postMessage("showCamera")
}
Run Code Online (Sandbox Code Playgroud)
在 Swift 中访问此函数如下:
webViewPWA.configuration.userContentController.add(self, name: "captureImage")
///This function handles the event generated by javascript
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
print("Webview Message received: \(message.name) with body: \(message.body)")
if (message.name == "captureImage"){
print("\(message.body)")
let body = message.body
if let action:String = body as? String {
switch action {
case "showCamera":
print("camera image triggering, capture image for JS")
//take necessary …Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的数据映射到模型。我在其中使用 Firestore 快照侦听器来获取数据。在这里,我正在获取数据并映射到“用户”模型;
do{
let user = try User(dictionary: tempUserDic)
print("\(user.firstName)")
}
catch{
print("error occurred")
}
Run Code Online (Sandbox Code Playgroud)
这是我的模型:
struct User {
let firstName: String
// var lon: Double = 0.0
// var refresh:Int = 0
// var createdOn: Timestamp = Timestamp()
}
//Testing Codable
extension User: Codable {
init(dictionary: [String: Any]) throws {
self = try JSONDecoder().decode(User.self, from: JSONSerialization.data(withJSONObject: dictionary))
}
private enum CodingKeys: String, CodingKey {
case firstName = "firstName"
}
}
Run Code Online (Sandbox Code Playgroud)
如果我错了请纠正我。
崩溃是因为我在数据中获取“时间戳”。
从监听器获取的数据:
用户词典: …