Рекламные баннеры, из-за которых MPNowPlayingInfoCenter теряет состояние

У меня есть приложение, которое воспроизводит звук с помощью AVPlayer, и я касаюсь нужных API, чтобы получить информацию о том, что сейчас исполняется, для обновления в Центре управления.

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:0 error:&categoryError];
[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeSpokenAudio error:&modeError];
[[AVAudioSession sharedInstance] setActive:YES error:&activeError];

[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = {...};
...
MPRemoteCommandCenter * const commandCenter = [MPRemoteCommandCenter sharedCommandCenter];
commandCenter.playCommand.enabled = YES;
...

Этот API работает должным образом до тех пор, пока некоторые объявления не будут отображаться с использованием платформы Google AdMob. Это стандартные МРЭК и баннеры, которые представлены в UIWebView экземплярах. Как только он появляется, состояние «Сейчас исполняется» возвращается к приложению «Музыка», и возможность использования пультов дистанционного управления исчезает.

Как только это происходит, я даже не могу переустановить информацию «Сейчас исполняется», она как будто застряла. Хотя, когда я распечатываю значение [[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo, оно, как я и ожидал, просто не отображается.

Объявления не воспроизводят аудио или видео, но каким-то образом они портят API Now Playing, и он не восстанавливается.

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


person Ricky    schedule 26.06.2019    source источник
comment
Думаю, у меня тоже такая же проблема. Центр управления показывает только музыку? Какую версию AdMob вы используете?   -  person C. Leung    schedule 26.06.2019
comment
@C.Leung Да! Я на одной из последних версий, v7.44. Вы также можете принять участие в этом обсуждении здесь: groups.google.com/forum/   -  person Ricky    schedule 26.06.2019


Ответы (1)


Я нашел этот вопрос при изучении аналогичной проблемы с SDK Google Interactive Media Ads (IMA SDK), где он автоматически менял состояние «Сейчас исполняется» на «Реклама». В конечном итоге обнаружен флаг в объекте IMAAdsSettings, disablesNowPlayingInfo Документация. Установка этого значения в true разрешила мою проблему.

        let adsLoaderSettings = IMASettings()
        adsLoaderSettings.disableNowPlayingInfo = true
        adsLoader = IMAAdsLoader(settings: adsLoaderSettings)
person Joopkins    schedule 17.12.2019