ios - YouTube 嵌入式播放器在 iOS 8 上因 gpus_ReturnNotPermittedKillClient 而崩溃

标签 ios objective-c iphone youtube youtube-api

我用 UIWebView 制作了一个 iOS 应用程序,它加载了 YouTube iFrame 播放器。 一切顺利,它甚至可以在后台继续播放视频,只有一个问题。

这个问题是这个月才出现的,而且不仅出现在最新的更新(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 渲染相关指令是不允许,) 所以它终止了应用程序。

我整整一周都在谷歌搜索和摸不着头脑来处理这个问题,但没有任何运气,有没有人知道如何处理它?<​​/p>

非常感谢您的任何建议和帮助!!!

最佳答案

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

只要您不调用 YTPlayer.loadVideoById(或 cueVideoById、loadVideoByUrl、cueVideoByUrl、loadPlaylist、cuePlaylist),YouTube iFrame 播放器似乎就不会创建 WebGL 渲染上下文。所以我只是将所有视频加载到我的播放列表中每当播放列表更改时加载播放列表。

通过此解决方法,我的应用程序不再崩溃。这很好,但我仍然想知道是否有人对此有真正的解决方案,请告诉我,非常感谢!!!

关于ios - YouTube 嵌入式播放器在 iOS 8 上因 gpus_ReturnNotPermittedKillClient 而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29742314/

相关文章:

ios - 蓝牙和 iOS - 支持哪些协议(protocol)/配置文件?

ios - 是否可以从 Objective-C (Xcode/iOS) 中的主类继承?

ios - 在独立 View 中使用时,iOS 8 中屏幕边缘的 UIBarButton 项目

iphone - 键值对 UIButton 状态的观察

iphone - MKMapView,15k 注释

ios - 将 NSLayoutConstraint 常量重置为其 Storyboard 中的原始值

ios - 如何找到 iOS 设备的辅助功能大小

iphone - 查找 iPhone 型号信息

iphone - CLLocationCooperative2D 到 MKAnnotation

objective-c - 添加一个( double )变量到 NSMutableArray