YouTubeembedded式播放器在iOS 8上与gpus_ReturnNotPermittedKillClient崩溃

我用UIWebView制作了一个装载YouTube iFrame播放器的iOS应用程序。 一切顺利,它甚至可以继续播放只有一个问题的背景video。

这个问题只发生在本月以来,不仅发生在最新的更新(iOS 8.3)上,而且还发生在iOS 8.1上,所以我认为这与YouTube iFrame API最近的一些修改有关。

在iOS 8(设备上只有iOS 8,而不是8之前的任何iOS,甚至不在模拟器上),当我将应用程序置于后台(例如,进入主屏幕,locking设备)时,video播放正常一旦video完成,应用程序尝试加载应用程序的播放列表中的下一个video,应用程序崩溃(实际上它似乎像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加载video,并尝试创build一个新的WebGL渲染上下文,这是iOS不允许的(在后台模式下GL渲染相关指令是不允许的, )所以它终止了应用程序。

我一直在Google上search整整一个星期来处理这个问题,但没有任何运气,有没有人有任何想法如何处理?

非常感谢你的任何build议和任何帮助!

好的,我仍然没有解决这个问题的解决scheme,但我只是想出了一个解决方法。

看起来,只要你不调用YTPlayer.loadVideoById(或cueVideoById,loadVideoByUrl,cueVideoByUrl,loadPlaylist,cuePlaylist。),YouTube的iFrame播放器不会创buildWebGL渲染上下文。所以我只是加载我的播放列表上的所有video与loadPlaylist播放列表已更改。

有了这个工作,我的应用程序不会崩溃了。 这很好,但我仍然怀疑是否有人有这个真正的解决scheme,请让我知道,非常感谢!