选择iOS应用程序在外部浏览器中加载的内容

时间:2011-12-20 10:53:46

标签: ios jquery-mobile cordova

我开发了一个在查询移动和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 ];
    }
}

app app delegate.m文件解决了这个问题,但创建了另一个问题。从应用程序的第二部分中的数据库中提取的内容有一些指向外部网页的链接,我们希望在Safari中打开这些内容以便为用户提供最佳的查看可能性,但即使链接具有target = “_ blank”他们仍然在应用程序中打开,因为上面有重写代码。

无论如何都要搜索youtube链接而不是http || HTTPS?

希望这能解释我的问题,并欢迎任何帮助。

1 个答案:

答案 0 :(得分: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 ];
    }  
}