func requestAds(with parameters: DFPAdParameters?) {
log.debug("Request ads")
if adsManager != nil {
adsManager?.pause()
adsManager?.destroy()
}
let adURLString = parameters.flatMap({ parameters in
guard var urlComponents = URLComponents(string: AdsPlayer.currentPrerollUrl) else { return nil }
urlComponents.queryItems = (urlComponents.queryItems ?? []) + [parameters.query]
return urlComponents.url?.absoluteString
}) ?? AdsPlayer.currentPrerollUrl
// Create ad display container for ad rendering.
let adDisplayContainer = IMAAdDisplayContainer(adContainer: videoView, companionSlots: nil)
// Create an ad request with our ad tag, display container, and optional user context.
let request = IMAAdsRequest(adTagUrl: adURLString,
adDisplayContainer: adDisplayContainer,
avPlayerVideoDisplay: IMAAVPlayerVideoDisplay(avPlayer: avPlayer),
pictureInPictureProxy: pictureInPictureProxy,
userContext: nil)
adsLoader.requestAds(with: request)
_ = NotificationCenter.default.addObserver(forName: UIApplication.didBecomeActiveNotification,
object: nil, queue: nil) { [weak self] (_) in
if self?.adStatus == .playing {
self?.adsManager?.resume()
}
}
_ = NotificationCenter.default.addObserver(forName: UIApplication.didEnterBackgroundNotification,
object: nil, queue: nil) { [weak self] (_) in
if self?.adStatus == .playing {
self?.adsManager?.pause()
}
}
}
09:58:36 AdsPlayer.adsLoader() 💚 DEBUG: loaded finished loading data: Optional(<IMAAdsLoadedData: 0x281bff2a0>)
09:58:36 AdsPlayer.adsManager() 💚 DEBUG: Ads manager did receive event: Loaded
09:58:36 AdsPlayer.adsManagerDidRequestContentPause() 💚 DEBUG: Ads manager:Optional(<IMAAdsManager: 0x283983610>) DidRequestContentPause for player: Optional(<AVPlayer: 0x2818c3580>)
09:58:36 VideoPlayer.playerStatus() 💚 DEBUG: Regular: paused -> paused
09:58:36 VideoPlayer.playerStatus() 💚 DEBUG: Regular: paused -> paused
09:58:37 VideoPlayer.init() 💚 DEBUG: CurrentItem changed:
https://d2rfgtg6ekc16k.cloudfront.net/wige/5abb730e1b6f1daf072bfc31/hd-copied.mp4 ->
09:58:37 VideoPlayer.playerStatus() 💚 DEBUG: Regular: paused -> paused
09:58:38 VideoPlayer.videoIsBuffering() 💚 DEBUG: Regular: true -> false
09:58:38 VideoPlayer.videoIsBuffering() 💚 DEBUG: Panorama: true -> false
09:58:38 VideoPlayer.playerStatus() 💚 DEBUG: Regular: paused -> waitingToPlayAtSpecifiedRate
09:58:38 VideoPlayer.playerStatus() 💚 DEBUG: Reason: AVPlayerWaitingReason(_rawValue: AVPlayerWaitingWhileEvaluatingBufferingRateReason)
09:58:38 VideoPlayer.playerStatus() 💚 DEBUG: Regular: waitingToPlayAtSpecifiedRate -> playing
09:58:38 AdsPlayer.adsManager() 💚 DEBUG: Ads manager did receive event: Started
09:58:41 AdsPlayer.adsManager() 💚 DEBUG: Ads manager did receive event: First Quartile
09:58:44 AdsPlayer.adsManager() 💚 DEBUG: Ads manager did receive event: Midpoint
09:58:46 AdsPlayer.adsManager() 💚 DEBUG: Ads manager did receive event: Third Quartile
09:58:49 DividerPlayer.playerItemFinished() 💚 DEBUG: Now
09:58:49 VideoPlayer.init() 💚 DEBUG: CurrentItem changed:
https://d2rfgtg6ekc16k.cloudfront.net/wige/5abb730e1b6f1daf072bfc31/hd-copied.mp4
09:58:49 VideoPlayer.playerStatus() 💚 DEBUG: Regular: playing -> playing
09:58:58 VideoPlayer.playerStatus() 💚 DEBUG: Regular: playing -> paused
09:58:58 AdsPlayer.adsManager() 💚 DEBUG: Ads manager did receive event: Complete
09:58:58 AdsPlayer.adsManagerDidRequestContentResume() 💚 DEBUG: Ads manager:Optional(<IMAAdsManager: 0x283983610>) DidRequestContentResume for player: Optional(<AVPlayer: 0x2818c3580>)
09:59:02 VideoPlayer.playerStatus() 💚 DEBUG: Regular: paused -> waitingToPlayAtSpecifiedRate
09:59:02 VideoPlayer.playerStatus() 💚 DEBUG: Reason: AVPlayerWaitingReason(_rawValue: AVPlayerWaitingWhileEvaluatingBufferingRateReason)
09:59:02 VideoPlayerViewController+StatusHandler.playerStatusChanged() ❤️ ERROR: avItemStatus: 2, playerStatus: waitingToPlayAtSpecifiedRate, avPlayer error:Optional(Error Domain=AVFoundationErrorDomain Code=-11819 "Vorgang kann nicht abgeschlossen werden" UserInfo={NSLocalizedDescription=Vorgang kann nicht abgeschlossen werden, NSLocalizedRecoverySuggestion=Später erneut versuchen.}), avItemError: Optional(Error Domain=AVFoundationErrorDomain Code=-11819 "Vorgang kann nicht abgeschlossen werden" UserInfo={NSLocalizedDescription=Vorgang kann nicht abgeschlossen werden, NSLocalizedRecoverySuggestion=Später erneut versuchen.}), avItemErrorLog: nil