2015-10-29 6 views
0

У меня есть реализация подкласса GLKViewController с ADBannerView как подвью. Реклама загружается и отображается просто отлично. Приложение OpenGL также отлично работает. Когда вы нажимаете на объявление, появляется всплывающее окно. GLKViewController имеет включенное по умолчанию действие pause-on-resign.iOS: Переключение приложений после пользовательских кликов ADBannerView вызывает сбой OpenGL

Если установить точку останова на setPaused GLKViewController, вы заметите, что setPaused: НЕТ вызывается, если вы переключаете от вашего приложения (дважды нажмите домой и выбрать другое приложение) в то время объявления всплывающее окно видна. Поведение происходит только тогда, когда всплывающее окно ADBannerView видимо, а не в случае отказа от приложения.

Я могу воспроизвести описанное выше поведение даже с использованием стандартного приложения шаблона OpenGL, созданного Xcode 7 в iOS 9.1.

1) Это нормально?

2) Для меня это вызывает согласованные воспроизводимые сбои, потому что после setPaused: вызывается NO, GLKViewController перерисовывается, что вызывает операции OpenGL, когда приложение находится в фоновом режиме. Приложение (правильно) убито в этот момент.

ответ

1

Мое текущее обходное решение состоит в том, чтобы отменить вызовы setPaused:NO следующим образом, когда приложение неактивно. Кажется, это работает нормально, но почему это вообще происходит, меня сбивает с толку.

- (void)setPaused:(BOOL)paused 
{ 
    long appState = (long)[UIApplication sharedApplication].applicationState; 
    if (!paused && (appState != 0)) { 
     NSLog(@"setPaused - REJECTING Unpause; %ld", appState); 
     return; 
    } 
    [super setPaused:paused]; 
} 
Смежные вопросы