【发布时间】:2015-12-04 17:55:08
【问题描述】:
我在显示 Vimeo 视频的 UIScrollView 中嵌入了一个 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 无论如何都不能解决这个问题。
【问题讨论】:
-
我也遇到过类似的问题,
NSAllowsArbitraryLoads也不好用,不过我通过给baseURL传nil暂时解决了,你可以试试吗? -
我在尝试在 iOS9 上播放 Vimeo 视频时遇到了同样的问题 - Vimeo 显示消息“Blast!此视频无法以您当前的设置播放。”视频在 iOS7 和 iOS8 上一直播放没有问题。仅供参考,我已经将 'nil' 传递给 baseURL: 参数,它正在生成这个结果。
-
@DerekLee 看起来你遇到了我遇到的问题。这似乎是 Vimeo 的旧 CDN 的问题。在您的应用中尝试此视频:vimeo.com/139107494。那个视频对我有用。然后,您可以询问 Vimeo 他们是否会将您的视频移动到他们的新 CDN。他们从未回复我关于何时移动所有视频。
-
谢谢@Richard!我尝试了您建议的新 CDN 上的视频,它的行为与我拥有的其他视频一样:按下播放按钮显示进度指示器动画,好像视频正在加载,但它从不播放。但是如果我按下暂停,然后再次播放,它确实开始播放。我的视频似乎在做同样的事情——它们第一次不播放,但在按下按钮 2-3 次后它们确实开始播放。总比完全不工作要好,但仍然不是预期的用户体验。