Cordova (PhoneGap) and iFrames

3
似乎每个人都知道 PhoneGap 中有一个小问题,它不允许你在应用程序中使用 iFrames。虽然有很多修复方法,但它们要么是针对旧版本的 PhoneGap,要么无法正常工作,或者会引起其他问题。以下是我迄今为止尝试过的解决方法:
  1. OpenAllWhitelistURLsInWebView

  2. http://craigpfau.com/2012/02/phonegap-ios-uiwebview-and-safari-app-links/

  3. How can I open an external link in Safari not the app's UIWebView?
似乎没有任何一种方法可行。这是我想要实现的目标:
  1. 来自vimeo的视频嵌入(iframe)保留在应用程序中,外部主机:vimeo.com a.vimeocdn.com b.vimeocdn.com
  2. 所有其他链接跳转到safari

这是我的应用程序详细信息:

ios 5.1.1 | Cordova 1.7.0 | JqueryMobile | Jquery 1.7.1


我不确定它能帮多少忙,但我有一个在iOS 5上使用Cordova 1.7,并成功运行Vimeo的示例应用程序-https://github.com/dhavaln/cordova-examples/tree/master/ios-cordova-video - dhaval
你是否有与该应用程序链接的其他链接,可以链接到Safari吗?我能够嵌入视频,但是所有我的链接都在我的程序内启动,而不是调用Safari ... - nate8684
是的,我可以做到,我已经在上面的GitHub项目中更新了更改。 - dhaval
1个回答

7

我有一个示例应用程序在这里,它可以在应用程序内打开Vimeo视频,但会在Safari中打开其他URL。

我更改了MainViewController.m中的以下函数

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

    if(host != NULL || host != nil){
        if ([host rangeOfString:@"vimeo.co"].location != NSNotFound) {
            return YES;
        }else{
            if ([[url scheme] isEqualToString:@"http"] || [[url scheme] isEqualToString:@"https"]) {
                [[UIApplication sharedApplication] openURL:url];
                return NO;
            }
            else {
                return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
            }
        }
    }

    return [super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType];
}

1
我正在使用Cordova 1.7.1,所以不确定在1.8.1中会如何运作,此外我已经修复了警告。 - dhaval
1
哦,天啊...经过无数次尝试,这个终于有效了!非常感谢你解决这个头痛问题。我仍然有两个警告,我应该担心吗?苹果会因为这些而不批准我的应用吗?请告诉我,再次感谢! - nate8684
1
请更新上面的警告代码,我已经在上面的代码片段中修复了它。 - dhaval
感谢您提供的解决方案。我在使用时遇到了问题,花了一些时间才发现在Cordova.plist的外部主机列表中添加player.vimeo.com是不够的,还必须添加a.vimeocnd.com和*.google-analytics.com。当然,*也可以使用...谢谢! - Overbeeke
当我在横向模式下持设备观看视频并将其全屏时,从全屏返回后设备会像处于纵向模式一样。有人知道原因吗? - Overbeeke
显示剩余12条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接