playPrerollAdWithCompletionHandler проблема

Я настраиваю MPMoviewPlayerController для отображения iAd перед тем, как начать воспроизведение видео. Таким образом, мой код выглядит так

player = [MPMoviePlayerController new]; player.contentURL = videoURL; [player playPrerollAdWithCompletionHandler:^(NSError *error) { NSLog(@"error playing ad %@", error.userInfo); [player play]; }]; [self.contentView addSubview:player.view]; [self.contentView layoutIfNeeded]; 

И в AppDelegate

 [MPMoviePlayerController preparePrerollAds]; 

Но проблема в том, что я получаю звук, но плеер не отображает видео. Также я не получаю никаких ошибок в обработчике завершения … Любая помощь очень ценится!

Для меня это работает только тогда, когда плеер установлен в полноэкранный режим.

 [parent.view addSubview: player.view]; [parent.view bringSubviewToFront:player.view]; [player setFullscreen:YES animated:YES]; 

У меня была такая же проблема (я слышал звук, но не воспроизводился видео), и я получил ответ на Форумы разработчиков Apple .

Кажется, вы должны убедиться, что есть только одна ссылка на контроллер видеоплеера. Это код, который я использовал, который теперь работает:

 @interface UIViewController () @property (strong, nonatomic) MPMoviePlayerController *moviePlayer; @end 

 MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] init]; moviePlayer.contentURL = movieURL; if (moviePlayer) { self.moviePlayer = moviePlayer; moviePlayer = nil; [self.moviePlayer prepareToPlay]; [self.view addSubview:self.moviePlayer.view]; } 

Затем я использую:

 - (void)playVideo { [self.moviePlayer playPrerollAdWithCompletionHandler:^(NSError *error) { if (!error) { [self.moviePlayer play]; } }]; } 

Надеюсь, это поможет.