com.apple.WebKit.WebContent löscht 113 Fehler: Der angegebene Dienst konnte nicht gefunden werden

75

Ich verwende WKWebView zum Anzeigen von benutzerdefiniertem HTML.

  • Unabhängig vom HTML-Inhalt erhalte ich beim Testen auf einem realen Gerät Could not signal service com.apple.WebKit.WebContent: 113: Could not find specified serviceinnerhalb von 29 Sekunden nach dem Laden des WKWebView- Inhalts den folgenden Fehler. Manchmal erhalte ich diesen Fehler sogar zweimal. Es handelt sich eindeutig um ein Konfigurationsproblem. Ich habe Cookies wie unter " Dienst com.apple.WebKit.WebContent" signalisiert nicht überprüft. Dies hilft jedoch nicht
  • Eine andere Frage ist, ob eine Liste aller Fehlercodes vorhanden ist, die möglicherweise in WKWebView angezeigt werden
Ievgen Gavrysh
quelle
Hallo @levgen, hast du eine Lösung für dieses Problem gefunden?
Dragisa Dragisic
1
@DragisaDragisic Siehe meinen Kommentar unten
Ievgen Gavrysh
1
Hallo, ich erhalte diesen Fehler, wenn ich ein von Unity generiertes Projekt verwende, insbesondere beim Versuch, das Anzeigenpaket zu initialisieren. Weiß jemand, was dies verursachen könnte?
Figwig
Fügen Sie "http: //" hinzu, um Ihr Problem zu lösen.
NSDev

Antworten:

36

Schließlich löste das Problem oben. Ich habe Fehler erhalten

  • Could not signal service com.apple.WebKit.WebContent: 113: Could not find specified service

Da ich der Ansicht kein WKWebView- Objekt als Unteransicht hinzugefügt und versucht habe, oben darauf aufzurufen -loadHTMLString:baseURL:. Und erst nachdem es erfolgreich geladen wurde, fügte ich es den Unteransichten der Ansicht hinzu - was völlig falsch war. Die richtige Lösung für mein Problem ist:

1. Fügen Sie dem subviewsArray der Ansicht ein WKWebView- Objekt hinzu

2. Rufen Sie -loadHTMLString:baseURL:für kürzlich hinzugefügte WKWebView

Ievgen Gavrysh
quelle
@ Nikita, hat es dir geholfen? Bitte teilen Sie Ihre exp und env. Bedingungen. Ich frage, da ich vorhatte, diesen Kommentar zu entfernen, da er nicht 100% ige Fälle löst, warum dieser Fehler auftreten kann ...
Ievgen Gavrysh
1
Das Protokoll selbst wird jedes Mal in verschiedenen Fällen erstellt. Ich habe kein konsistentes Muster für das Protokoll gefunden. Die Tatsache, dass Webview zur Ansichtshierarchie hinzugefügt wird, hilft jedoch dabei, alle Anforderungen zu laden. Ich hatte genau den gleichen Fall - fügte keine Webansicht zum Anzeigen hinzu, bis sie geladen wurde; Jetzt füge ich es als versteckt zum Schlüsselfenster hinzu, damit es in der Ansichtshierarchie angezeigt wird. Wenn es geladen wird, füge ich es an der Stelle hinzu, an der es sein soll, und deaktiviere die versteckte Eigenschaft.
Nikita
7
Ich mache das, was du gesagt hast, in der richtigen Reihenfolge, aber ich bekomme immer noch den Fehler. Mir ist aufgefallen, dass der Moment, in dem es passiert, mir ziemlich zufällig erscheint ... Wie manchmal passiert es, nachdem ich die VC mit dem WebView bereits entlassen habe, und manchmal passiert es, wenn ich es lade ... Haben Sie schon etwas anderes herausgefunden? aus?
Andreza Cristina da Silva
Vielen Dank, dass ich das auch getan habe und das Problem dadurch vollständig behoben ist!
Austin
Bitte kann ich das "WKWebView-Objekt zum Subviews-Array der Ansicht hinzufügen" von einer Kondensator-App (ionic 5) aus
tun
13

Auch ich hatte dieses Problem beim Laden einer ' http' -URL in WKWebView in iOS 11, es funktioniert gut mit https.

Was für mich funktioniert hat, war das Festlegen der App-Transporteinstellung in der Datei info.pist, um das Laden des Arbitars zu ermöglichen.

<key>NSAppTransportSecurity</key>
    <dict>
        <!--Not a recommended way, there are better solutions available-->
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
Asad Khan
quelle
3
Dies würde eine Begründung in der App Store-Einreichung erfordern gemäß: developer.apple.com/documentation/bundleresources/…
zaitsman
11

Vielleicht ist es eine ganz andere Situation, aber ich habe es immer bekommen, WebView[43046:188825] Could not signal service com.apple.WebKit.WebContent: 113: Could not find specified service wenn ich eine Webseite im Simulator geöffnet habe, während der Debugger daran angehängt war. Wenn ich den Debugger beende und die App erneut öffne, wird die Webseite problemlos geöffnet. Dies ist auf den Geräten nicht der Fall.

Nachdem er , um herauszufinden , einen ganzer Arbeits Tag versucht , was falsch ist, fand ich heraus , dass , wenn wir einen Rahmen genannt haben Preferences, UIWebViewund WKWebViewwird über eine Webseite zu öffnen und wirft die Fehler nicht in der Lage sein.

Um diesen Fehler zu reproduzieren, erstellen Sie einfach eine einfache App WKWebView, um eine Webseite anzuzeigen. Erstellen Sie dann ein neues Framework-Ziel und benennen Sie es Preferences. Importieren Sie es dann in das Hauptziel und führen Sie den Simulator erneut aus. WKWebViewkann keine Webseite öffnen.

Es ist also wahrscheinlich unwahrscheinlich, aber wenn Sie ein Framework mit dem Namen haben Preferences, versuchen Sie es zu löschen oder umzubenennen.

Wenn jemand eine Erklärung dafür hat, teilen Sie diese bitte mit.

Übrigens war ich auf Xcode 9.2.

yusuke024
quelle
Ich bin gerade darauf gestoßen und habe es einfach im Simulator ausgeführt, ohne dass eine Xcode-Debugging-Sitzung stattgefunden hat. Es gab kein Einstellungs-Framework oder irgendetwas anderes, aber es sah so aus, als ob es mit Cookies / localStorageProblemen in der WKWebView.
Echelon
8

Ich habe diesen Fehler beim Laden einer http: // URL erhalten, bei der der Server mit einer Umleitung zu https geantwortet hat. Nachdem ich die URL geändert habe, übergebe ich WKWebView an https: // ... es hat funktioniert.

Markus
quelle
Vielen Dank! Ich habe debuggt und das "s" auf der Test-URL, die ich verwendet habe, weggelassen. Dies hat es für mich behoben ...
Don
3

SCHNELL

Nun, ich habe dies in der folgenden Reihenfolge gemacht und danach keine Fehler mehr erhalten. Der Could not signal service com.apple.WebKit.WebContent: 113: Could not find specified servicefolgende Code könnte Ihnen auch helfen.

webView = WKWebView(frame: self.view.frame)
self.view.addSubview(self.view.webView)
webView.navigationDelegate = self
webView.loadHTMLString(htmlString, baseURL: nil)

Als Bestellung ausführen.

Vielen Dank

Abhishek Mitra
quelle
3

Ich hatte dieses Problem unter iOS 12.4 beim Aufrufen von evaluJavascript. Ich habe es gelöst, indem ich den Anruf eingewickelt habeDispatchQueue.main.async { }

John Popham
quelle
Wo kann ich schreiben? Ich trid, aber spiele kein Video
Maulik shah
DispatchQueue.main.async {self.wkWebView.loadHTMLString ("<html> <Körperschriftfamilie: 'THSarabun'> Es lebe der KÖNIG <br/> <br/> </ body> </ html>", baseURL: nil)}
ittgung
2

In meinem Fall habe ich ein WKWebView gestartet und eine Website angezeigt. Dann (innerhalb von 25 Sekunden) habe ich die Zuordnung des WKWebView aufgehoben. Aber 25-60 Sekunden nach dem Start von WKWebView erhielt ich die Fehlermeldung "113". Ich gehe davon aus, dass das System versucht hat, dem WKWebView etwas zu signalisieren, und es nicht finden konnte, weil es freigegeben wurde.

Die Lösung bestand einfach darin, die WKWebView zugewiesen zu lassen.

Peter B. Kramer
quelle
2
Das scheint keine saubere Lösung zu sein. Ich möchte nicht, dass mein WKWebView noch existiert, auch wenn ich es offensichtlich nicht mehr brauche, weil es Ressourcen verbraucht und viel Speicher kostet.
dedda1994
2
Ich denke, so etwas nennt man Speicherverlust.
Mateusz
Vielleicht ein Speicherverlust - aber es hat mich verrückt gemacht. Ich ordne / initiiere nur ein WKWebView-Objekt im App-Delegaten, verweise auf diese eine Instanz aus einer beliebigen Ansicht und füge sie als Unteransicht hinzu. Klappt wunderbar. Ich habe den Frame auch auf den Frame eines versteckten UILabel in der Ansicht gesetzt, damit ich die gesamte Xib-Größenänderung verwenden kann.
Peter B. Kramer
1

Meins war wieder anders. Ich habe den Benutzeragenten so eingestellt:

    NSString *jScript = @"var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);";
    WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:jScript injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];

Dies führte dazu, dass etwas auf der Webseite ausflippte und Speicherplatz verlor. Ich bin mir nicht sicher warum, aber das Entfernen dieses Problems hat das Problem für mich gelöst.

Guy Lowe
quelle
Das Entfernen der JavaScript-Injektion hat das Problem für mich behoben ... aber jetzt muss ich eine Problemumgehung finden, da ich den JS
Aaron
0

Vielleicht könnte die folgende Methode die Ursache sein, wenn Sie sie eingestellt haben

func webView(_ webView: WebView!,decidePolicyForNavigationAction actionInformation: [AnyHashable : Any]!, request: URLRequest!, frame: WebFrame!, decisionListener listener: WebPolicyDecisionListener!) 

endet mit

decisionHandler(.cancel)

für die Standardeinstellung navigationAction.request.url

Hoffe, es funktioniert!

Pradheep Narendran P.
quelle
0

Unter OS X muss sichergestellt werden, dass die Sandbox-Funktionen ordnungsgemäß eingerichtet sind, damit WKWebView verwendet werden kann.

Dieser Link machte mir dies klar: https://forums.developer.apple.com/thread/92265

Teilen in der Hoffnung, dass es jemandem helfen wird.


Wählen Sie die Projektdatei im Navigator aus, wählen Sie Funktionen aus und stellen Sie Folgendes sicher:
* App-Sandbox ist AUS
ODER
* App-Sandbox ist EIN UND Ausgehende Verbindungen (Client) ist aktiviert.

Juanmi
quelle
3
Fügen Sie die eigentliche Antwort hinzu, anstatt nur darauf zu verlinken.
RiddleMeThis
0

Nur als Referenz für andere schien ich dieses Problem auch zu haben, wenn ich versuchte, eine URL zu laden, die am Ende Leerzeichen enthielt (wurde aus Benutzereingaben abgerufen).

Dom Barnes
quelle
0

Löschen / Kommentieren

- (void)viewWillAppear:(BOOL)animated {[super viewWillAppear:YES];}

Funktion löste das Problem für mich.

XCode (11.3.1)

durchhängen
quelle