Ensemble useragent dans WKWebview
Comment puis-je personnaliser la chaîne useragent dans un WKWebView? Je suis en train d'intégrer la version de mon application, de sorte que de mon côté serveur peut voir quelles sont les fonctionnalités disponibles. J'ai trouvé la méthode suivante:
let userAgent = "MyApp/1.33.7"
request.setValue(userAgent, forHTTPHeaderField: "User-Agent")
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {(response, data, error) in
let content = NSString(data: data, encoding: NSUTF8StringEncoding)
self.web!.loadHTMLString(content!, baseURL: url)
}
self.web!.loadRequest(request);
Mais cela signifie que le client est uniquement définie pour cette requête unique. La première autre demande (par exemple, un avant), signifie que le client est réinitialisé à la valeur par défaut de nouveau. Comment puis-je plus de façon permanente configurer le wkwebview à utiliser mon personnalisée useragent chaîne?
- Utilisez la même méthode que pour UIWebView décrit ici: stackoverflow.com/questions/478387/...
- Qui dispose d'une belle solution, en utilisant les valeurs par défaut du dictionnaire, qui semble être au travail 🙂 la Seule chose que je ne suis pas sûr de savoir comment obtenir de l'existant userAgent chaîne à partir de la WKWebView. Toutes les idées sur ce point?
- double possible de WKWebview ensemble de l'agent utilisateur d'OS X Yosemite
Vous devez vous connecter pour publier un commentaire.
Vous serez heureux d'apprendre que
WKWebView
acquis unecustomUserAgent
propriété dansiOS 9
etOSX 10.11
Exemple:
Mise à jour:
Que de iOS 9.0, il est possible de définir l'utilisateur agent directement (comme indiqué dans les autres réponses). Mais il est important de noter que la définition qu'il va complètement modifier la valeur par défaut de l'agent utilisateur. Si, pour quelque raison, vous devez simplement ajouter un user agent " personnalisé, utilisez l'une des méthodes suivantes.
ou à l'aide d'un sacrificiel UIWebView
Vieille réponse:
Comme indiqué dans mon commentaire vous pouvez utiliser la même approche que celle décrite ici: Changement de l'Agent Utilisateur dans UIWebView (SDK de l'iPhone)
Maintenant, si vous voulez obtenir de l'agent utilisateur, vous devez disposer d'une instance d'un WKWebView et d'évaluer ce javascript sur elle:
Le problème est que si vous définissez une coutume de l'agent utilisateur après un WKWebView a été instancié vous obtiendrez toujours le même agent utilisateur. Pour résoudre ce problème, vous devez retrouver la vue web. Voici un exemple de ce que cela peut donner:
Le code ci-dessus va log:
Alternative
Ce pourrait être encore plus simple en utilisant un "sacrificielle" UIWebView, car il évalue javascript de manière synchrone.
Enregistre la même chose:
Maintenant UIWebView et WKWebView utiliser le même agent utilisateur, mais cette approche pourrait causer des problèmes si cela change dans le futur.
customUserAgent
et elle prend effet, sans avoir besoin de ré-instancierWKWebView
.Personnalisé De L'Agent Utilisateur
Personnaliser l'Agent Utilisateur vous pouvez utiliser
customUserAgent
propriété:Disponibles: iOS 9+
Ajouter à la valeur par défaut de l'Agent Utilisateur
Pour ajouter une chaîne personnalisée à la et de la valeur par défaut de l'agent utilisateur, vous pouvez utiliser
applicationNameForUserAgent
propriété:Puis il regardera comme par exemple:
Disponibles: iOS 9+
WKWebView
Swift 3 exemple:Note à ceux qui tentent de le faire à l'aide de maquette ou de Interface Builder: Malheureusement, Xcode n'est actuellement pas en charge l'utilisation de
WKWebView
dans les Storyboards (Xcode version 8.3.2), de sorte que vous devez ajouter de la vue web manuellement dans votre code.UIWebView
Swift 3 exemple:Dans ma swift 3 cas, j'ai besoin de toute application utilisant une mesure userAgent, voici ma solution en AppDelegate. Ici, à l'aide de UIWebview est parce que je n'ai pas besoin de configurer le WKWebViewConfiguration, juste parce que j'ai seulement besoin de la chaîne userAgent
UIWebView
etWKWebView
.