2011-02-08 00:52:55
UIWebViewでUser-Agentを変更する
テーマ:プログラム/IT
UIWebViewでサイトをみると、User-AgentがSafariと違うため、一部のサイトでは
iPhoneであると認識できずにPCサイトに連れていかれてしまいます。(Yahooとか)
ちょっと前までは
でよかったようですが、iOS4.2でやってみると期待通りには動いてくれませんでした。
色々やってみたところ、
とやると期待通りになってくれるようです。
これはUIWebViewWebViewDelegateというprotocolで、WebViewDelegateと同じ内容を
備えている非公開protocolのようです。非公開なのでこれを使って審査が通るかどうかは
未知数ですが、UIWebViewWebViewDelegateを使うと色々便利なことが出来るので、
いま作ってるアプリではバリバリ使ってみてます。
審査が通るといいなぁ。
UIWebViewWebViewDelegateは非公開なので
とやっても宣言に含まれてきません。
なので@interfaceは普通に
とだけやっておいて、.m で知らん顔して実装してしまえばUIWebViewが呼び出してくれます。=D
もちろんUIWebViewのdelegateにHogeViewControllerを設定しておく必要はありますよ。
iPhoneであると認識できずにPCサイトに連れていかれてしまいます。(Yahooとか)
ちょっと前までは
- (BOOL)webView:(UIWebView *)webView
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType
{
NSMutableURLRequest *req = (NSMutableURLRequest*)request;
[req setValue:USER_AGENT_STRING forHTTPHeaderField:@"User_Agent"];
return YES;
}
でよかったようですが、iOS4.2でやってみると期待通りには動いてくれませんでした。
色々やってみたところ、
-(NSURLRequest*) uiWebView:(id)webView
resource:(id)identifier
willSendRequest:(NSURLRequest *)request
redirectResponse:(NSURLResponse *)redirectResponse
fromDataSource:(id)dataSource
{
NSMutableURLRequest *req = (NSMutableURLRequest*)request;
[req setValue:USER_AGENT_STRING forHTTPHeaderField:@"User-Agent"];
return req;
}
とやると期待通りになってくれるようです。
これはUIWebViewWebViewDelegateというprotocolで、WebViewDelegateと同じ内容を
備えている非公開protocolのようです。非公開なのでこれを使って審査が通るかどうかは
未知数ですが、UIWebViewWebViewDelegateを使うと色々便利なことが出来るので、
いま作ってるアプリではバリバリ使ってみてます。
審査が通るといいなぁ。
UIWebViewWebViewDelegateは非公開なので
#import <UIKit/UIKit.h>
とやっても宣言に含まれてきません。
なので@interfaceは普通に
@interface HogeViewController : UIViewController<UIWebViewDelegate>
とだけやっておいて、.m で知らん顔して実装してしまえばUIWebViewが呼び出してくれます。=D
もちろんUIWebViewのdelegateにHogeViewControllerを設定しておく必要はありますよ。






