Vimeo没有在iOS 9上的UIWebView中运行

时间:2015-09-08 22:12:17

标签: uiwebview vimeo ios9

我在UIScrollView中嵌入了一个显示Vimeo视频的UIWebView:

vimeoView = [[UIWebView alloc] init];    
NSMutableString *html = [[NSMutableString alloc] initWithCapacity:1] ;
                        [html appendString:@"<html><head>"];
                        [html appendString:@"<style type=\"text/css\">"];
                        [html appendString:@"body {"];
                        [html appendString:@"background-color: transparent;"];
                        [html appendString:@"color: white;"];
                        [html appendString:@"}"];
                        [html appendString:@"</style>"];
                        [html appendString:@"</head><body style=\"margin:0\">"];
                        [html appendString:@"<iframe src=\"https://player.vimeo.com/video/%@?title=0&byline=0&portrait=0&badge=0&loop=1\" width=\"%0.0f\" height=\"%0.0f\" frameborder=\"0\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>"];
                        [html appendString:@"</body></html>"];

                        NSString *htmlString = [NSString stringWithFormat:html, videoID, vimeoView.frame.size.width, vimeoView.frame.size.height];

                        [vimeoView loadHTMLString:htmlString baseURL:[NSURL URLWithString:@"https://vimeo.com"]];

此代码使用Xcode 7编译并通过App Store分发(当然,在beta模式下)。该应用程序在iOS 8上运行良好,但在iOS 9上它在全屏启动后挂起0。

有人在iOS 9上工作吗?我想避免使用HTTPS的异常切换(或者至少只使用指定服务器的一个狭窄的异常)。 FWIW,NSAllowsArbitraryLoads = YES无论如何也无法解决这个问题。

2 个答案:

答案 0 :(得分:1)

以下是我从Vimeo支持中收到的回复:

  

我们正在进行CDN之间的迁移,所以我很好奇这是否与您所看到的有关。

     

例如,你可以试试这个视频:https://vimeo.com/76979871,它位于我们较旧的CDN上;

     

和此视频:https://vimeo.com/139107494,位于我们较新的CDN上。

对我而言,这是因为新CDN上的视频在我的应用中运行良好,旧CDN上的视频没有。但是,我没有收到关于是否/何时将旧CDN视频迁移到新CDN的消息。

-----从Vimeo支持9/22更新:

iOS 9中的Web视图不会通过安全连接(HTTPS)加载不安全的内容(HTTP)。播放旧版CDN上托管的较旧视频时,某些内容仍然通过HTTP提供。最近上传的视频的所有资源都通过HTTPS提供,并且可以在iOS 9网页浏览中播放。

您的应用是否仅通过Vimeo帐户播放视频,还是也显示其他人的视频?如果您只是在自己的应用中使用自己的视频,我建议您再次上传这些视频;他们应该自动转到我们较新的CDN,其中所有资产都通过HTTPS提供。

我们正在将视频从我们较早的CDN转移到我们较新的CDN上,但是没有公布的时间表这需要多长时间。

答案 1 :(得分:0)

你可以尝试这样的事情:

- (void)webViewDidFinishLoad:(UIWebView *)webView{
    NSURLRequest* request = [webView request];
    NSString *host = [request.URL host];

    if ([host isEqualToString:@"player.vimeo.com"]){
        NSString *js = @"document.querySelector('.play').click();";
        [self.webView stringByEvaluatingJavaScriptFromString:js];
    }
}