Выбор того, что загружается во внешний браузер на iOS-приложении - PullRequest
0 голосов
/ 20 декабря 2011

Я разработал приложение, работающее с запросом mobile и phonegap. Приложение состоит из двух частей, каждая из которых извлекает данные из внешней базы данных для простоты обновления. Две области - это фильмы и контент. Фильмы транслируются с 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 ];
    }
}

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

Есть ли в любом случае для поиска ссылок на YouTube, а не http || HTTPS

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

1 Ответ

1 голос
/ 22 декабря 2011

Я нашел решение, изменив код для проверки 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 ];
    }  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...