我想将Safari调试器附加到turbo-ios个本地应用程序中的模拟器上.根据S blog post的说法,您需要添加以下代码

    let webView = WKWebView()
if #available(iOS 16.4, *) {
    webView.isInspectable = true
}

let session = Session(webView: webView)

我想不出该把这个代码放在哪里.我在SceneDelegate班try 过这样做,如下所示

private let webViewConfiguration: WKWebViewConfiguration = {
    let configuration = WKWebViewConfiguration()
    configuration.applicationNameForUserAgent = " IOS-xyz/1.0"
    // Enable inspection for Safari debugger
    if #available(iOS 16.4, *) {
        configuration.isInspectable = true
    }

但这给出了一个错误

Value of type 'WKWebViewConfiguration' has no member 'isInspectable' 

那么我该把这个代码放在哪里呢?

对于上下文,这里是整个SceneDelegate类,除了使用WKWebViewConfiguration之外,它对于turbo-iOS来说是相当标准的.

import UIKit
import Turbo
import WebKit

class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    var window: UIWindow?
    private lazy var navigationController = UINavigationController()
    
    private let webViewConfiguration: WKWebViewConfiguration = {
        let configuration = WKWebViewConfiguration()
        configuration.applicationNameForUserAgent = " IOS-xyz/1.0"
        return configuration
    }()

    private func visit(url: URL) {
        let viewController = VisitableViewController(url: url)
        navigationController.pushViewController(viewController, animated: true)
        session.visit(viewController)
    }

    // Initialize the Turbo Session with the custom configuration
    private lazy var session: Session = {
        let session = Session(webViewConfiguration: webViewConfiguration)
        session.delegate = self
        return session
    }()

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let _ = (scene as? UIWindowScene) else { return }
        window!.rootViewController = navigationController
        visit(url: URL(string: "http://myserver.com/sessions/new")!)
    }
}

extension SceneDelegate: SessionDelegate {
    func session(_ session: Session, didProposeVisit proposal: VisitProposal) {
        visit(url: proposal.url)
    }
    
    func session(_ session: Session, didFailRequestForVisitable visitable: Visitable, error: Error) {
        print("didFailRequestForVisitable: \(error)")
    }
    
    func sessionWebViewProcessDidTerminate(_ session: Session) {
        session.reload()
    }
}

推荐答案

isInspectableWKWebView的属性,在WKWebViewConfiguration内不可用.

private let webViewConfiguration: WKWebViewConfiguration = {
    let configuration = WKWebViewConfiguration()
    configuration.applicationNameForUserAgent = " IOS-xyz/1.0"
    // other configuration
    return configuration
}()

private lazy var session: Session = {
    let webView = WKWebView(frame: .zero, configuration: webViewConfiguration)
    if #available(iOS 16.4, *) {
        webView.isInspectable = true
    }
    let session = Session(webView: webView)
    session.delegate = self
    return session
}()

enter image description here

Ios相关问答推荐

如何将模糊输入/模糊输出添加到SwiftUI中的非对称过渡?

执行devicectl:ProcessException时出错:进程异常退出:错误:命令超时超过5.0秒

使用异步重载实现Swift协议一致性

查找东南亚语言(泰语、高棉语、老挝语、缅甸语)中的单词边界

在 SwiftUI 中使用 .rotation3DEffect 在视图之间翻转

如何从 Locale Swift 获取货币符号

弹出视图后使所有背景 UI 模糊

如何 comments .plist 文件中的行?

NSFetchedResultsController 由字符串的第一个字母创建的部分

在 Swift 中执行 while 循环

如何更新推送通知服务证书

如何关闭情节提要弹出框

Xcode 项目格式:3.1、3.2、6.3 和 8.0 有什么区别?

无论我将构建版本或应用程序版本更改为什么,都会出现 ITEMS-4238冗余二进制上传错误

没有 Mac 的 Xamarin Visual Studio IOS 开发?

刷新由 Xcode 7 管理的团队配置文件中的设备?

直接下载Xcode模拟器

Swift:调用中缺少参数标签xxx

如何在键盘上方添加工具栏?

如何在 Objective-C 中组合两个数组?