Запрос http://mobile.twitter.com на UIWebView - PullRequest
6 голосов
/ 09 марта 2012

Я пытался вставить небольшое веб-представление (320x480) в свое приложение для iPad, чтобы имитировать маленький «экран iPhone», отображающий мобильный твиттер. Но каждый раз, когда uiwebview получает NSUrlRequest для загрузки http://mobile.twitter.com,, мое приложение автоматически отрывается от экрана, и iOS открывает Twitter для 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 ]

1 голос
/ 09 марта 2012

Я также заметил это новое поведение в UIWebView в ряде приложений.Это только начало происходить с сегодняшнего дня, так как вчера все эти приложения работали нормально.

Если вы попытаетесь подключиться вместо этого к https://mobile.twitter.com (обратите внимание, что URL-адрес - "https") в UIWebView, вы попадете наЭкран входа в Twitter, но после ввода учетных данных сайт пытается перенаправить ваше приложение на временную шкалу twitter: // после входа в систему. Если на устройстве не установлено официальное мобильное приложение Twitter, вы не можете просматривать мобильный сайт Twitter в UIWebView.,Если у вас установлено нативное приложение Twitter, вы будете перенаправлены на него вместо просмотра мобильного сайта в UIWebView.

Странно то, что если вы попробуете то же самое в Mobile Safari, вы не получитеэто поведение перенаправления к собственному мобильному приложению Twitter.

Является ли это каким-то новым ограничением со стороны Twitter, поскольку это нарушит ряд приложений, которые получают доступ к мобильному сайту Twitter в UIWebView.

Я не уверен, испытали ли другие пользователи такое же новое поведение ??

PS: Только что проверил доску обсуждений поддержки разработчиков Твиттера, и кто-то еще испытывает ту же проблему ??

1 голос
/ 09 марта 2012

Если вы делаете это так, вы не должны перенаправляться

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

Поведение, которое вы описали, достижимо с помощью этой строки кода (перенаправления):

[[UIApplication sharedApplication] openURL:url];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...