Comment détecter les rediriger dans une UIWebView
Je suis l'aide d'une UIWebView comme un navigateur intégré au sein de mon application. Le problème que j'ai est suivi de l'URL qui doit être affiché dans la barre d'URL.
Lorsque vous faites une recherche sur Google, la page de résultats est souvent génératrice de liens de ce type:
Lorsque l'utilisateur clique sur ce lien, la UIWebView premiers rapports de ce lien et ensuite redirigé lien dans shouldStartLoadWithRequest:navigationType:
.
Comment puis-je dire que c'est une redirection contrairement à certains complémentaires site en cours de chargement pour les images ou d'autres éléments sur la page? Comme il est de ma barre d'URL est l'affichage le long lien de Google dans l'exemple ci-dessus, plutôt que la mise à jour de la Wikipédia URL.
- J'ai un tutoriel sur mon site web qui vous montre comment faire. Découvrez la Construction d'un Navigateur Web avec UIWebView (Partie 3). À la fin de ce tutoriel, il est téléchargeable code source que vous êtes libre de les utiliser dans votre propre projet. Permettez-moi de savoir si elle fait ce que vous voulez. Si non, peut-être que je peux suggérer comment vous pouvez le modifier.
- Merci pour cela. Je n'ai pas encore définitivement détecter une redirection, mais à l'aide de la [demande mainDocumentURL] je pense va me donner ce dont j'ai besoin.
- n'est plus disponible
- Ce n'est plus disponible? Liés tutoriel et le code source est (tout revérifié maintenant) et l' -[NSURLRequest mainDocumentURL] est toujours disponible (voir developer.apple.com/library/ios/documentation/Cocoa/Reference/...)
- désolé, toujours disponible. mais la question est, où dans ton tuto ne vous détecter la redirection?
- Lisez la section intitulée "Maintien de la Barre d'Adresse de Synchronisation".
- Vous avez sauvé mon dos. Merci.
Vous devez vous connecter pour publier un commentaire.
Le meilleur que vous pouvez vraiment faire est d'observer les
webView:shouldStartLoadWithRequest:navigationType:
délégué de la méthode. Je suppose que les redirections relèvent deUIWebViewNavigationTypeOther
.UIWebViewNavigationType
n'indique que l'action de l'utilisateur dans le déclenchement de la demande, il n'a pas donné de détails quant à ce que le serveur est en train de faire.Un peu tard maintenant, mais je voudrais utiliser le webViewDidFinishLoad et la webViewDidStartLoad délégué des méthodes pour détecter les redirections comme suit:
request
propriété dewebView
donné parwebViewDidStartLoad:
de fiable. Il est préférable de stocker la demande d'origine utilisé pour charger la UIWebView et de la comparer à l'encontre de la demande transmise parwebViewDidFinishLoad:
.webViewDidStartLoad
retourne unNSMutableURLRequest
qui est vide, et ne peut donc pas être utilisé pour beaucoup. Ne rien faire explicitement complexe, tout chargement d'un site web à l'aide deloadRequest:
, le site charge très bien etwebViewDidFinishLoad
renvoie la demande correctement sinon.Je suis en train de travailler par le biais de ce même problème. À l'origine, j'ai suivi les conseils ici et utilisé maindocumenturl pour entrer manuellement l'adresse url dans la liste de l'historique pour l'arrière/vers l'avant de la navigation. Cependant, cela ne donne pas très précis url, si oui ou non vous avez l'url de didstartload ou didfinishload. Si vous voulez vous sentir ma douleur, essayez de naviguer à travers une recherche sur google et vous verrez de quoi je parle, maindocumenturl est complètement inutile dans cet environnement. En revanche, l'url absolue de la propriété utilisée avec webviewdidfinishload fonctionne beaucoup mieux, et en fait, permet à l'utilisateur de créer un produit de l'histoire. C'est mes deux cents.