Comment puis-je surveiller les demandes sur WKWebview?
Comment puis-je surveiller les demandes sur WKWebview?
Je v essayé à l'aide de NSURLprotocol (canInitWithRequest) mais il ne peut pas surveiller les requêtes ajax (XHR), de navigation seulement des demandes(demandes de documents)
source d'informationauteur Benzi Heler
Vous devez vous connecter pour publier un commentaire.
Enfin je l'ai résolu
Depuis je n'ai pas de contrôle sur le web afficher le contenu, j'ai injecté de la WKWebview un script java qui incluent un jQuery AJAX demande de l'auditeur.
Lorsque l'auditeur attrape une demande qu'il envoie à l'application native le corps de la requête dans la méthode:
L'application native attrape le message dans un délégué a appelé:
et d'effectuer les actions correspondantes
voici le code correspondant:
ajaxHandler.js -
Mon ViewController délégué:
Et dans mon
viewDidLoad()
je suis de la création d'un WKWebView:Ici est la addUserScriptToUserContentController:
Si vous avez le contrôle du contenu à l'intérieur de la
WkWebView
vous pouvez envoyer des messages à votre application native à l'aide dewindow.webkit.messageHandlers
chaque fois que vous effectuez une requête ajax, qui sera reçu comme unWKScriptMessage
qui peuvent être traités par ce que vous avez désigné comme votreWKScriptMessageHandler
. Les messages peuvent contenir toutes les informations que vous souhaitez, et sera automatiquement convertie en natif des objets de valeurs dans votre Objectif-C ou Swift code.Si vous n'avez pas de contrôle sur le contenu, vous pouvez toujours le faire par l'injection de votre propre code JavaScript via un
WKUserScript
pour suivre les requêtes ajax et l'envoi de messages à l'aide de la méthode décrite ci-dessus.