Wann eine WebView inspizierbar ist
- Seit iOS 16.4 ist eine
WKWebViewoder einJSContextnur inspizierbar, wenn die AppisInspectableauftruesetzt. Vor iOS 16.4 waren WebViews in Entwicklungs-Builds automatisch inspizierbar. - Die App muss ein Entwicklungs-Build sein, installiert aus Xcode oder mit einem Entwicklungsprofil. Apps aus App Store und TestFlight lassen sich nicht untersuchen.
- Die App muss beim Debuggen im Vordergrund laufen; Apps im Hintergrund antworten nicht.
Inspizierbare WebViews erscheinen in der Seitenleiste unter dem Namen deiner App mit dem Kennzeichen WebView, auf iPhone oder iPad genauso wie im iOS-Simulator.
Swift
let webView = WKWebView(frame: .zero, configuration: configuration)
#if DEBUG
if #available(iOS 16.4, *) {
webView.isInspectable = true
}
#endifDie Beschränkung auf DEBUG hält Release-Builds verschlossen. Dieselbe Eigenschaft gibt es bei JSContext für JavaScriptCore-Kontexte:
let context = JSContext()!
if #available(iOS 16.4, *) {
context.isInspectable = true
}Objective-C
if (@available(iOS 16.4, *)) {
webView.inspectable = YES;
}Capacitor
Capacitor steuert das über webContentsDebuggingEnabled. Entwicklungs-Builds sind meist schon inspizierbar; erscheint deine WebView nicht, setze es ausdrücklich:
// capacitor.config.ts
const config: CapacitorConfig = {
ios: { webContentsDebuggingEnabled: true },
};Danach npx cap sync ios ausführen und die App erneut aus Xcode bauen.
Cordova
Neuere Versionen von cordova-ios lesen die Einstellung InspectableWebview aus der config.xml:
<preference name="InspectableWebview" value="true" />React Native WebView
react-native-webview bietet den Schalter als Eigenschaft:
<WebView source={{ uri: 'https://example.com' }} webviewDebuggingEnabled={__DEV__} />Android
Das Gegenstück unter Android ist WebView.setWebContentsDebuggingEnabled(true), siehe die Android-Anleitung.
Fehlt sie immer noch?
Die Anleitung für iPhone & iPad zeigt, was zu prüfen ist, wenn ein Gerät keine inspizierbaren Seiten anbietet, und tapscope doctor meldet den Zustand jedes Geräts.