Подтвердить что ты не робот

Встроенный проигрыватель YouTube разбился с gpus_ReturnNotPermittedKillClient на iOS 8

Я сделал приложение iOS с UIWebView, которое загружает плеер YouTube iFrame. Все прошло хорошо, и он даже может воспроизводить видео на фоне только одной проблемы.

Эта проблема возникает только с этого месяца, и это происходит не только с последним обновлением (iOS 8.3), но и с iOS 8.1, поэтому я полагаю, что он имеет какое-то отношение к недавней модификации API iFrame YouTube.

На iOS 8 (только iOS 8 на устройстве, а не на iOS до 8 и даже на эмуляторе), когда я помещаю приложение в фоновый режим (например, перейдите на главный экран, заблокируйте устройство), воспроизведение видео обычно, но как только видео будет завершено, и приложение попытается загрузить следующее видео в плейлисте приложения, приложение выйдет из строя (на самом деле это похоже на то, что силы 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(...) API YouTube загружает видео и пытается создать новый контекст рендеринга WebGL, который не разрешает iOS (связанные с GL-инструкциями в фоновом режиме не разрешено), поэтому он завершает работу приложения.

Я искал Google и царапал себе голову на целую неделю, чтобы справиться с этим, но без везения никто не знает, как с этим справиться?

Большое вам спасибо за любое предложение и любую помощь!!!

4b9b3361

Ответ 1

Хорошо, у меня все еще нет рабочего решения для этой проблемы, но я просто разобрался в работе.

Похоже, что плеер YouTube iFrame не создает контекст рендеринга WebGL, если вы не вызываете YTPlayer.loadVideoById(или cueVideoById, loadVideoByUrl, cueVideoByUrl, loadPlaylist, cuePlaylist.) Поэтому я просто загружаю все видео в свой плейлист с помощью loadPlaylist при каждом изменении плейлиста.

С этой работой мое приложение больше не разбивается. Это хорошо, но я все еще задаюсь вопросом, есть ли у кого-то реальное решение для этого, пожалуйста, дайте мне знать, и это очень ценится!!!