UIWebView ウェブビュー


アプリ内でウェブを表示するにはUIWebViewを使います。ちなみにウェブビューだけで構成されたアプリはAppleにリジェクトされるとか。

ウェブページを表示

UIWebViewを使ってyahooのページを表示します。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// 画面サイズの取得
CGRect frameSize = [[UIScreen mainScreen] applicationFrame];
UIWebView * webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, frameSize.size.width, frameSize.size.height)];
NSString * url = @"http://yahoo.co.jp";
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
[self.view addSubview:webView];
}

loadRequestでurlを指定します。

ユーザーエージェントの取得と書き換え

UIWebViewからstringByEvaluatingJavaScriptFromStringを使うとユーザーエージェントが取得できます。
UIWebView * webView = [[[UIWebView alloc] initWithFrame:CGRectZero] autorelease];
NSString * userAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
userAgent = [userAgent stringByAppendingString:@" UIWebView"];
NSDictionary * dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:userAgent, @"UserAgent", nil]; [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
NSLog(@"UserAgent : %@", userAgent);
// 出力
UserAgent : Mozilla/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B144 UIWebView

ログ出す場所があれですけど、取得したユーザーユーザーエージェントの後ろにUIWebViewという文字列をくっつけてました。これをサーバー側で判定すればアプリ経由と判定が可能です。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です