WKWebViewでカスタムユーザーエージェント文字列を設定するにはどうすればよいですか?サーバー側で利用可能な機能を確認できるように、アプリのバージョンを埋め込みます。私は次の方法を見つけました:
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);
ただし、これは、useragentがその単一の要求に対してのみ設定されることを意味します。最初のその他のリクエスト(例:転送)は、ユーザーエージェントが再びデフォルトにリセットされることを意味します。カスタムuseragent文字列を使用するようにwkwebviewをより恒久的に構成するにはどうすればよいですか?
WKWebView
がiOS 9
およびOSX 10.11
でcustomUserAgent
プロパティを取得したことを聞いてうれしいです
例:
wkWebView.customUserAgent = "your agent"
カスタムユーザーエージェントを設定するには、customUserAgent
プロパティを使用できます。
let webConfiguration = WKWebViewConfiguration()
let webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.customUserAgent = "ExampleApp/1.0 (iPhone)"
利用可能:iOS 9以降
デフォルトのユーザーエージェントにカスタム文字列を追加するには、applicationNameForUserAgent
プロパティを使用できます。
let webConfiguration = WKWebViewConfiguration()
webConfiguration.applicationNameForUserAgent = "ExampleApp/1.0 (iPhone)"
let webView = WKWebView(frame: .zero, configuration: webConfiguration)
次に、次のようになります。
Mozilla/5.0 (iPhone; CPU iPhone OS 11_2 like Mac OS X) AppleWebKit/604.4.7
(KHTML, like Gecko) ExampleApp/1.0 (iPhone)
^^^^^^^^^^^^^^^^^^^^^^^
利用可能:iOS 9以降
WKWebView
Swift 3例:
let userAgentValue = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4"
webView.customUserAgent = userAgentValue
StoryboardまたはInterface Builderを使用してこれを行おうとする人への注意:残念ながら、Xcodeは現在、Storyboards(Xcodeバージョン8.3.2)でWKWebView
の使用をサポートしていないため、Webビューを手動で追加する必要がありますコード。
UIWebView
Swift 3例:
UserDefaults.standard.register(defaults: ["UserAgent": userAgentValue])
Swift 3の場合、カスタムuserAgentを使用するアプリ全体が必要です。AppDelegateでの私のソリューションです。UIWebviewの使用は、WKWebViewConfiguration、userAgent文字列のみが必要なため
fileprivate func setupGlobalWebviewUserAgent() {
let webview = UIWebView()
var newUserAgent = webview.stringByEvaluatingJavaScript(from: "navigator.userAgent")
newUserAgent = newUserAgent?.appending("custom user agent")
let dictionary = Dictionary(dictionaryLiteral: ("UserAgent", newUserAgent))
UserDefaults.standard.register(defaults: dictionary)
}