WebView ベースの iOS アプリを開発する際、Web サーバー側からアプリからのアクセスを判定したいケースがあるかと思います。
そういった場合、UIWebView に対してユニークなユーザーエージェントを付与し、その文字列から JavaScript 等で判定することが一番簡単な方法かと思います。
今回は Swift で UIWebView のユーザーエージェントを書き換えてみたいと思います。
目次
- 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で共有していただければ幸いです。