J'utilise WKWebView pour afficher du code HTML personnalisé.
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 pasEnfin, 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
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.
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é.
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>
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
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.
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!
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é.