Swift: UIWebView の UserAgent を書き換える

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

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

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

目次

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

UIWebView の UserAgent を書き換える

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

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

AppDelegate.swift

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
}

まとめ

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

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

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

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

siro:chro 無料ゲーム SQN をリリースしました

img_sqn_00

sirochro 初の無料ゲームアプリ SQN をリリースしました。
記事:SQN: iOS 無料ゲームアプリ SQN - Sequential Numbers をリリース
ちょっとした時間に楽しめる完全無料のゲームなっていますので、是非ダウンロードして遊んでみてください。

↓SQN のダウンロードはこちらから

Related Contents

Pickup Contents