iOS: переключение приложений после того, как пользователь щелкает ADBannerView, вызывает сбой OpenGL

У меня есть реализация подкласса GLKViewController с ADBannerView в качестве подвида. Объявления загружаются и отображаются нормально. Приложение OpenGL также работает нормально. Когда вы нажимаете на объявление, появляется всплывающее окно. В GLKViewController включено поведение паузы при уходе по умолчанию.

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

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

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

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


person advayDev1    schedule 29.10.2015    source источник


Ответы (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];
}
person advayDev1    schedule 29.10.2015