web-dev-qa-db-fra.com

com.Apple.WebKit.WebContent supprime l'erreur 113: impossible de trouver le service spécifié

J'utilise WKWebView pour afficher du code HTML personnalisé. 

  • Quel que soit le contenu HTML, lors du test sur un périphérique réel, je reçois le message d'erreur suivant: Could not signal service com.Apple.WebKit.WebContent: 113: Could not find specified service après 29 secondes de chargement du contenu WKWebView. Parfois, je reçois même cette erreur deux fois. Clairement, c'est un problème de configuration. J'ai vérifié les cookies comme proposé dans Impossible de signaler le service com.Apple.WebKit.WebContent , mais cela n'aide pas
  • Une autre question est de savoir s’il existe une liste de tous les codes d’erreur pouvant apparaître dans WKWebView
31
Ievgen Gavrysh

Enfin, résolu le problème ci-dessus. Je recevais des erreurs

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

Depuis que je n'ai pas ajouté WKWebView object sur la vue en tant que sous-vue et a essayé d'appeler -loadHTMLString:baseURL: sur le dessus. Et seulement après le chargement réussi, je l’ajoutais aux sous-vues de la vue - ce qui était totalement faux. La solution correcte à mon problème est la suivante:

1. Ajouter WKWebView objet dans le tableau subviews de la vue

2. Appelez -loadHTMLString:baseURL: pour ajouter récemment WKWebView

24
Ievgen Gavrysh

C’est peut-être une situation totalement différente, mais j’ai toujours eu WebView[43046:188825] Could not signal service com.Apple.WebKit.WebContent: 113: Could not find specified service lors de l’ouverture d’une page Web sur le simulateur alors que le débogueur y était associé. Si je ferme le débogueur et rouvre l’application, la page Web s’ouvrira parfaitement. Cela n'arrive pas sur les appareils.

Après avoir passé toute une journée de travail à essayer de comprendre ce qui n'allait pas, j'ai découvert que si nous avions un framework nommé Preferences, UIWebView et WKWebView, nous ne pourrions pas ouvrir une page Web et rejetterions l'erreur ci-dessus.

Pour reproduire cette erreur, créez simplement une application avec WKWebView pour afficher une page Web. Créez ensuite une nouvelle cible de structure et nommez-la Preferences. Importez-le ensuite dans la cible principale et exécutez à nouveau le simulateur. WKWebView ne parviendra pas à ouvrir une page Web.

Cela peut donc être peu probable, mais si vous avez un framework nommé Preferences, essayez de le supprimer ou de le renommer.

De plus, si quelqu'un a une explication à ce sujet, merci de le partager.

BTW, j'étais sur Xcode 9.2.

5
yusuke024

J'ai eu cette erreur en chargeant une URL http: // où le serveur a répondu avec une redirection vers https. Après avoir changé l'URL, je passe à WKWebView en https: // ... cela a fonctionné.

5
Markus

J'ai moi aussi rencontré ce problème lors du chargement d'une URL 'http' dans WKWebView sous iOS 11, cela fonctionne bien avec https.

Ce qui a fonctionné pour moi, c’était de configurer les paramètres de transport d’application dans le fichier info.pist pour permettre un chargement arbitraire.

<key>NSAppTransportSecurity</key>
    <dict>
        <!--Not a recommended way, there are better solutions available-->
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
3
Asad Khan

Rapide

Eh bien, j’ai fait cela dans l’ordre suivant et je n’ai pas eu d’erreur comme Could not signal service com.Apple.WebKit.WebContent: 113: Could not find specified service après cela, le code suivant pourrait vous aider aussi.

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

Faites comme ordre.

Merci

1
Abhishek Mitra

Le mien était encore différent. Je configurais l'agent utilisateur comme suit:

    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];

Cela causait un phénomène de panique sur la page Web et une fuite de mémoire. Je ne sais pas pourquoi mais supprimer cette question a réglé le problème pour moi.

1
Guy Lowe

Peut-être que la méthode ci-dessous pourrait être la cause si vous l'avez configurée sur 

func webView (_ webView: WebView!, decidePolicyForNavigationAction actionInformation: [AnyHashable: Any]], request: URLRequest !, frame: WebFrame !, écouteur decisionListener: WebPolicyDecisionListener!) se termine par decisionHandler (.cancel ) pour la valeur par défaut navigationAction.request.url

Esperons que ça marche!

0

Dans mon cas, je lançais un WKWebView et affichais un site Web. Puis (dans un délai de 25 secondes), j'ai libéré le WKWebView. Mais 25 à 60 secondes après le lancement de WKWebView, j'ai reçu ce message d'erreur "113". Je suppose que le système essayait de signaler quelque chose au WKWebView et ne pouvait pas le trouver car il était désalloué.

Le correctif consistait simplement à laisser le WKWebView alloué.

0
Peter B. Kramer