概要
WKWebView で既存の UserAgent を取得してそれを書き換えて UserAgent を変更する方法を紹介します
環境
- macOS 10.15.4
- Xcode 11.4.1 (11E503a)
サンプルコード
WKWebView は WebKit が必要になるので最初に import します
import WebKit
あとは WKWebView を作成して UserAgent を設定します
既存の UserAgent を取得するには evaluateJavaScript
を使って JavaScript を発行し内部のブラウザから UserAgent の情報を取得します
あとは取得した文字列情報の UserAgent を replace などを使って書き換えます
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
var webView: WKWebView? = WKWebView()
webView!.evaluateJavaScript("navigator.userAgent", completionHandler: { (result, error) in
webView = nil
guard let ua = result as? String else {
return
}
let customUserAgent = ua.replacingOccurrences(of: "iPad", with: "iPhone")
let dic: NSDictionary = ["UserAgent" : customUserAgent]
UserDefaults.standard.register(defaults: dic as! [String : AnyObject])
})
}
上記は iPad 用の UserAgent を iPhone の UserAgent に書き換えています
UserAgent の情報は UserDefaults.standard.register
を使って登録します
この方法にすることでアプリ全体で使用する UserAgent を設定することになるので再度設定の必要がなくなります
なので実行する場合は didFinishLaunchingWithOptions
など初期化の際に一度だけ実行されるメソッド内で行うとよいでしょう
逆に毎回 UserAgent を変更したい場合は WKWebView.customUserAgent を使ってください
0 件のコメント:
コメントを投稿