MENU
コンテンツ再構築中

Swift: UIWebView の UserAgent を書き換える

WebView ベースの iOS アプリを開発する際、Web サーバー側からアプリからのアクセスを判定したいケースがあるかと思います。

そういった場合、UIWebView に対してユニークなユーザーエージェントを付与し、その文字列から JavaScript 等で判定することが一番簡単な方法かと思います。

今回は Swift で UIWebView のユーザーエージェントを書き換えてみたいと思います。

INDEX

目次

  • UIWebView の UserAgent を書き換える
  • まとめ

UIWebView の UserAgent を書き換える

UIViewController の UIWebView からでは、先にデフォルトのユーザーエージェントが呼ばれてしまうため、ユーザーエージェントの書き換えを行う場合は AppDelegate で行う必要があります。

一度サイズのない空の UIWebView を生成し、その UIWebView からデフォルトのユーザーエージェントを取得し、値を追加・上書きすることでユニークなユーザーエージェントに変更します。

AppDelegate.swift

[code]
func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {

let additionalStr = “Your userAgent here”

let webView:UIWebView = UIWebView()
webView.frame = CGRectZero
let userAgent:String! = webView.stringByEvaluatingJavaScriptFromString(“navigator.userAgent”)
let myUserAgent:String = userAgent.stringByAppendingString(additionalStr)
let dic:NSDictionary = [“UserAgent”:myUserAgent]
NSUserDefaults.standardUserDefaults().registerDefaults(dic)

return true
}
[/code]

まとめ

Android の WebView に触れると iOS の UIWebView の良さをあらためて実感します。

Xcode で開発を行っていると、余計なことをしてくれていると思うときもありますが、多くのケースでは、それが一定のユーザビリティを保証する上で正解であることがほとんどです。

ものづくりを行う人々にとっては当たり前のことなのですが、ないものを作り出そうとする前に、ない理由を調査した上で、本当にやるべきかどうかを検討する必要があると思います。

この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Please share it!
  • URLをコピーしました!
  • URLをコピーしました!
INDEX