HTMLで作ったスマホページのレイアウトを、特定のWebviewから見られているときだけ変更したいと思い、アプリ側のWebViewに独自のUAを設定し、jsでユーザーエージェント取得・判定・表示の切り分けを行いました。試した中で気づいたことをメモ。
■諸注意
UAの設定方法が、Googel Analytics(以下GA)とwebviewで表示されるページの見え方に影響する
■完全オリジナルのUAを設定した場合
・GAではアクセスをユーザーエージェント毎に分けて見られるので、アプリからのアクセスのみを簡単に把握できる。
・Webviewで開いたページ側がレイアウトをUAで判断して切り分けている場合に、スマホと見なされずPC版が表示されてしまう。
■デフォルトUAに独自語句を付加した場合
・GAの集計には、safariからのアクセスとして合算されてしまう。
・Webviewで開いたページはスマホ表示
■設定方法
1.デフォルトのuserAgentを取得して、接尾にカスタム語句" HOGEHOGE"を連結
(見やすくするため頭にスペース入れた)
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero];
NSString *userAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
NSString *customUserAgent = [userAgent stringByAppendingString:@" HOGEHOGE"];
2.UserAgentに設定
NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:customUserAgent , @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];