【发布时间】:2015-06-26 20:23:29
【问题描述】:
我使用加载 YouTube iFrame 播放器的 UIWebView 制作了一个 iOS 应用。 一切都很顺利,它甚至可以继续在后台播放视频,但只有一个问题。
此问题仅在本月出现,不仅在最新更新(iOS 8.3)上出现,而且在 iOS 8.1 上也出现,所以我认为这与 YouTube iFrame API 的最近修改有关。
在 iOS 8 上(设备上只有 iOS 8,不是 8 之前的任何 iOS,甚至在模拟器上都没有),当我将应用程序置于后台(例如,转到主屏幕,锁定设备)时,视频播放通常,但是一旦视频播放完毕并且应用尝试加载应用播放列表中的下一个视频,应用就会崩溃(实际上似乎是 iOS 强制终止它。)
WebThread 上有一个 EXC_BAD_ACCESS
libGPUSupportMercury.dylib gpus_ReturnNotPermittedKillClient
崩溃日志中的相关调用栈如下:
Thread 6 name: WebThread
Thread 6 Crashed:
0 libGPUSupportMercury.dylib 0x000000018b829f90 gpus_ReturnNotPermittedKillClient + 12
1 libGPUSupportMercury.dylib 0x000000018b82af3c gpusSubmitDataBuffers + 168
2 WebCore 0x0000000191620820 WebCore::GraphicsContext3D::reshape(int, int) + 528
3 WebCore 0x0000000191e93ce0 WebCore::WebGLRenderingContext::initializeNewContext() + 1136
4 WebCore 0x0000000191e93594 WebCore::WebGLRenderingContext::WebGLRenderingContext(WebCore::HTMLCanvasElement*, WTF::PassRefPtr<WebCore::GraphicsContext3D>, WebCore::GraphicsContext3D::Attributes) + 600
5 WebCore 0x0000000191e92c54 WebCore::WebGLRenderingContext::create(WebCore::HTMLCanvasElement*, WebCore::WebGLContextAttributes*) + 1144
6 WebCore 0x000000019132f6ec WebCore::HTMLCanvasElement::getContext(WTF::String const&, WebCore::CanvasContextAttributes*) + 312
简单地说,在我的理解中,当我调用 YTPlayer.loadVideoById(...) YouTube API 加载视频并尝试创建一个新的 WebGL 渲染上下文时,iOS 不允许(后台模式下的 GL 渲染相关指令是不允许,) 所以它会终止应用程序。
我已经用谷歌搜索了整整一个星期来解决这个问题,但没有任何运气,有人知道如何处理它吗?
非常感谢您的任何建议和帮助!!!
【问题讨论】:
标签: ios objective-c iphone youtube youtube-api