我在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无论如何也无法解决这个问题。
答案 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];
}
}