在UIWebView上请求http://mobile.twitter.com

时间:2012-03-09 10:53:39

标签: objective-c ios xcode ipad safari

我一直试图在我的iPad应用程序中插入一个小的webview(320x480),以模拟一个显示移动twitter的小“iPhone屏幕”。但是,每当uiwebview获得加载http://mobile.twitter.com的NSUrlRequest时,我的应用程序就会自动从屏幕上扯掉,iOS会打开Twitter for iPad。

有没有办法改变这种行为?

这就是我正在做的事情:

UIWebView *viewDoTwitter = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, self.view.bounds.size.height)];
viewDoTwitter.autoresizingMask = UIViewAutoresizingFlexibleHeight;
viewDoTwitter.scalesPageToFit = YES;

 [rootView insertSubview:viewDoTwitter atIndex:0];
 [viewDoTwitter loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://mobile.twitter.com"]]];

编辑:

好的,我在这里找到了解决方案:http://www.mphweb.com/en/blog/easily-set-user-agent-uiwebview

 UIWebView *viewDoTwitter = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, self.view.bounds.size.height)];
 viewDoTwitter.autoresizingMask = UIViewAutoresizingFlexibleHeight;
 viewDoTwitter.scalesPageToFit = YES;

 NSDictionary *dictionnary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3", @"UserAgent", nil];
 [[NSUserDefaults standardUserDefaults] registerDefaults:dictionnary];

 [rootView insertSubview:viewDoTwitter atIndex:0];

 [viewDoTwitter loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.twitter.com"]]];

但是,现在面临一个新问题:mobile.twitter.com坚持要适应iPad屏幕的大小,而不是我指定的320像素宽度。

2 个答案:

答案 0 :(得分:1)

如果您这样做,则不应重定向

- (void)viewDidLoad {
  [super viewDidLoad];
  NSURL *url = [NSURL URLWithString:@"http://mobile.twitter.com"];
  NSURLRequest *request = [NSURLRequest requestWithURL:url];
  [webView loadRequest:request];
}

您描述的行为可通过此行代码(重定向)实现:

[[UIApplication sharedApplication] openURL:url];

答案 1 :(得分:1)

我也注意到许多应用程序中UIWebView中的这种新行为。这种情况从今天开始才发生,因为昨天所有这些应用程序都运行正常。

如果您尝试在UIWebView中连接到https://mobile.twitter.com(请注意网址为“https”),您将进入Twitter登录屏幕,但在输入凭据后,网站会尝试将您的应用重定向到Twitter:/登录后的/ timeline。如果您没有在设备上安装官方Twitter原生移动应用程序,则无法在UIWebView中浏览Twitter移动网站。如果您安装了Twitter原生应用程序,您将被重定向到该应用程序,而不是在UIWebView中浏览移动网站。

奇怪的是,如果您在Mobile Safari中尝试相同的操作,则不会将此重定向行为发送到本机Twitter移动应用程序。

这是Twitter方面的某种新限制,因为这会破坏许多在UIWebView中访问移动Twitter网站的应用程序。

我不确定其他用户是否遇到过同样的新行为?

PS:刚刚检查了Twitter开发人员的支持讨论区,其他人遇到了同样的问题?