ユーザエージェントをUserDefaultsに設定する必要があります。 次のコードを使用して設定することができます。
func setUserAgent(as userAgentString: String) {
UserDefaults.standard.register(defaults: ["UserAgent": userAgentString])
}
使用法:
let userAgentString = "USER AGENT STRING HERE"
setUserAgent(as: userAgentString)
編集:私はあなたが現在のUserAgentにいくつかの文字列を追加したいことがわかり
。 そのためには、現在のユーザーエージェントの値を読み込んで保存し、カスタム文字列を追加してから新しいユーザーエージェントを格納する必要があります。使用方法は同じです。
func setUserAgent(as value: String) {
let webView = UIWebView(frame: CGRect(width: 0, height: 0))
let defaultUserAgentString = webView.stringByEvaluatingJavaScript(from: "navigator.userAgent")
UserDefaults.standard.register(defaults: ["UserAgent": defaultUserAgentString + " " + value])
// remove the " " space if you don't need it
}
EDIT 2:
はい、それはあなたのアプリケーション全体のすべてのWebビューのためにそれを変更します変更。することができますこれを避けるために...ここに
func setUserAgent(as value: String) {
let webView = UIWebView()
Constants.defaultUserAgentString = webView.stringByEvaluatingJavaScript(from: "navigator.userAgent") ?? ""
UserDefaults.standard.register(defaults: ["UserAgent": defaultUserAgentString + " " + value])
}
func resetUserAgent() {
if let defaultString = Constants.defaultUserAgentString {
UserDefaults.standard.register(defaults: ["UserAgent": defaultString])
}
}
Constants
は、グローバル定数を格納するために使用される構造体/クラスで使用すると、1つを持っている場合、あなたはあなた自身の構造体/クラスでそれを置き換えることができます。デフォルトのユーザエージェントを追跡するために静的変数defaultUserAgentString
を追加するだけです。 resetUserAgent()
を使用して、完了したらデフォルトのユーザーエージェントに戻ります。変更されたユーザーエージェントが必要なWebView
を処理するViewController
のviewWillDisappear(
に追加してください)。
ありがとうございます!できます!私のコードがなぜios 10で動作したのか、古いバージョンで動作していないのか、好奇心から逃れています。 UserDefaultsで設定した場合は、それも削除する必要がありますか?それ以外の場合、他のWebViewにも影響を与える可能性があります。 – Samps
私はiOS 9.2でそれをテストしましたが、うまくいくようです。 はい、他のWebViewにも影響します。そのための修正についてはEDIT 2を参照してください。希望があなたの質問に答えることを望みます。 – NSAdi