Quel utilisateur-agent HTTP mon programme iOS annonce-t-il?
J'ai écrit une application pour mon podcast, Otaku no Podcast. Dans diverses parties de l'application, j'utilise NSURLConnection
(récupérer les flux RSS), UIWebView
(afficher le contenu du site web), AVPlayer
(lecture des fichiers audio MP3 notre CDN), et MPMoviePlayerViewController
(lire des fichiers vidéo au large de nos CDN). Maintenant, puisque toutes ces faire des requêtes HTTP, de la sorte, je suppose qu'ils vont faire de la publicité avec l'iPhone standard chaîne de l'agent Utilisateur. (si mon hypothèse est incorrecte, s'il vous plaît laissez-moi savoir) Ce qui signifie que, sur la base de la lecture de mes fichiers de log, je n'ai aucun moyen de savoir lequel de mes visiteurs arrivent via un bon vieux mobile de Safari, au lieu d'utiliser mon application.
Est-il un moyen de changer le User-Agent pour l'un de mes propres? J'ai trouvé cette question, de SORTE qui explique comment le faire avec NSURL
mais je ne peux pas trouver toutes les informations sur l'une des classes ci-dessus que j'utilise.
source d'informationauteur Donald Burr
Vous devez vous connecter pour publier un commentaire.
Votre hypothèse initiale est partiellement incorrecte - Une coutume chaîne de l'agent Utilisateur est utilisé pour NSURLRequests à partir de votre application. Dans mes tests, la chaîne est
Cependant, certaines demandes de UIWebView utiliser cette chaîne de l'agent utilisateur
probablement pour que les sites web peuvent optimiser leur code HTML pour l'appareil, même si ce n'est pas MobileSafari.
Selon cette blog, vous pourriez être en mesure de définir une pseudo-global chaîne de l'Agent Utilisateur (pseudo dans le fait que je ne suis pas sûr d'autres classes, en dehors de
UIWebView
l'utiliser).Selon les commentaires sur ce post, "nous ne pouvons pas le modifier plus tard" est un peu exagéré: vous pouvez modifier le
UserAgent
valeur plus tard, mais vous devezrelease
et re-alloc
toutUIWebView
s (et je présumeNSURLConnection
s si ils l'utilisent trop) pour que les modifications prennent effet.De regarder cette question connexe ( Changer le userAgent de NSURLConnection ), on dirait qu'il est assez facile de faire un user-agent de changement pour NSURLConnection.
Que pour les autres catégories (UIWebView, AVPlayer, MPMoviePlayerViewController), il n'y a pas de moyen facile de jouer avec le sous-jacent NSURLConnections.
Si vous voulez vraiment changer le user-agent pour toutes les requêtes HTTP, je vous suggère de regarder dans Objective-C Classe Posant pour remplacer NSURLConnection (qui je l'espère ne nécessitent pas complètement réimplanter).