Выбор того, что загружается во внешнем браузере в приложении iOS

Я разработал приложение, работающее в мобильных запросах и телефонной связи. Приложение состоит из двух частей, каждая из которых извлекает данные из внешней базы данных для простоты обновления. Две области — это фильмы и контент. Фильмы транслируются с YouTube, а контент представляет собой текст, извлеченный из внешней базы данных и отображаемый в виде мини-веб-страницы.

Все работает нормально, за исключением страницы с фильмами, на которой перечислены все фильмы (с небольшим изображением для предварительного просмотра), которые перенаправляются на YouTube, открывая первое видео в списке. Добавление:

    - (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSURL *url = [request URL];
    if ([[url scheme] isEqualToString:@"http://"] || [[url scheme] isEqualToString:@"https://"]) {
        return YES;
    }
    else {
        return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
    }
}

В файле app delegate.m эта проблема решается, но создается другая. Контент, который извлекается из базы данных во второй части приложения, имеет несколько ссылок на внешние веб-страницы, мы хотим, чтобы они открывались в сафари, чтобы предоставить пользователю наилучшие возможности просмотра, но даже если ссылка имеет target= «_blank» они по-прежнему открываются в приложении из-за переопределяющего кода выше.

Можно ли искать ссылки на YouTube, а не на http || https?

Надеюсь, это объясняет мою проблему, и любая помощь приветствуется.


person jimbo    schedule 20.12.2011    source источник


Ответы (1)


Я нашел решение, сначала изменив код для проверки www.youtube.com, проблема решается. К счастью, все ссылки в приложении ведут на m.youtube.com, так что это решает проблему с переадресацией ;)

    - (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSURL *url = [request URL];

    if ([[url host] isEqualToString:@"www.youtube.com"]){
        return YES;
    } else if ([[url scheme] isEqualToString:@"http://"] || [[url scheme] isEqualToString:@"https://"]) {
        return YES;
    } else {
        return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
    }  
}
person jimbo    schedule 22.12.2011