2016-12-07 6 views
0

나는 라이브 스트림을 시청하기 위해 앱을 만들고 있습니다. 테이블 뷰를 기반으로하며 광고를 통해 무료로 제공하고 싶습니다 (인앱 구매로 '프로 버전'을 구입할 기회가 있음). 테이블보기에 AdMob 배너를 삽입 할 수 있었지만 비디오 스트림에도 작은 배너를 삽입하고 싶습니다. AVPlayer를 사용하여 스트림을 표시하고 videoOverlayView라는 메서드가 있다는 것을 알고 있습니다.이 메서드는 비디오가 재생 될 때 볼 수있는 사용자 정의보기를 삽입 할 수 있으므로이 메서드를 사용하여이 배너를 표시해야한다고 생각했지만 사용할 수 없었습니다. 에. 다음 코드는 플레이어를 설정하고 완벽하게 작동하지만이 배너를 보여주기 위해 추가 한 코드가 완전히 쓸모없는 것 같다 (난 아직 완벽하게 비디오를 볼 수 있지만 배너가 표시되지 않습니다) : 나는 어떻게해야합니까AVPlayer에서 AdMob 배너를 표시하는 방법은 무엇입니까?

func allestisciPlayer(indexPath: IndexPath, destinazione: AVPlayerViewController) { 

    // Ricava il canale corretto per mezzo della funzione apposita 
    let canaleSelezionato = ritornaIlCanaleCorretto(indexPath: indexPath) 

    // Prende il percorso giusto per lo streaming, poi crea il player nella destinazione 
    let url = URL(string: canaleSelezionato.urlCanale) 
    if let streamingURL = url { 
     destinazione.player = AVPlayer(url: streamingURL) 

     // Il do-try-catch seguente serve per far funzionare l'audio dell'app anche se l'iPhone è in modalità silenziosa; togli il blocco per fare in modo che l'app non produca audio se l'iPhone è in modalità silenziosa 
     do { 
      try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) 
     } catch { 
      print("Errore: non riesco a riprodurre l'audio se iPhone è in modalità silenziosa.") 
     } 

     let bannerView = GADBannerView() 
     bannerView.adUnitID = "ca-app-pub-xxxx/xxxx" 
     bannerView.rootViewController = self 

     let request = GADRequest() 
     request.testDevices = ["xxxx"] 
     bannerView.load(request) 

     bannerView.bounds = CGRect(x: 0, y: 0, width: 320, height: 50) 

     destinazione.contentOverlayView?.addSubview(bannerView) 

     // Infine avvia il player 
     destinazione.player?.play() 
    } 
} 

을 잘못된? 나는 또한 prepareForSegue 메서드에서이 코드를 사용하려고했지만 AVPlayerViewController의 viewDidLoad 메서드를 재정의하여도 성공을 거두지 못했습니다. 아무도 나를 도와 줄 수 없습니까?

EDIT : 나는 그다지 어렵지 않다는 것을 알았습니다 :) 기존 배너보기와 다른 새로운 배너를 만들고 다른 UIView를 생성하고 배너를 하위보기로 추가하여 표시합니다. 이 새로운 뷰와 마지막으로 AVPlayerViewController에 새 뷰를 하위 뷰로 추가합니다. contentOverlayView 메서드를 사용하여 배너를 표시하는 것을 관리하지는 못했지만 사용하는 광고를 표시 할 수있을지라도 contentOverlayView 내용으로 인해 사용자가 터치 할 수 없도록 클릭 할 수 없습니다. 어쨌든 고마워요 :)

답변

0

이것은 광고를 초기화하는 올바른 방법이 아닙니다. 당신은 appdelegate에서 그것을 초기화해야한다, 그리고 당신은 당신이 원하는 곳에 자유롭게 광고를 표시 할 수 있어야한다.

+0

Google의 광고 안내에 따라 광고를 볼 수 있으며 테이블보기에서 볼 수 있습니다. 제공된보기 컨트롤러가 AVPlayerViewController의 인스턴스 일 때만 화면에 표시되지 않습니다. 어쨌든 AppDelegate에서 코드를 초기화하고 나서 destinazione.contentOverlayView로 배너를로드하려고 시도 했는데도 .addSubview (bannerView) 하지만 여전히 성공하지 못했습니다. contentOverlayView 메소드가 올바르게 작동하지 않는 것 같습니다. – nickropes

+0

내가 의미하는 바는이 코드를 AppDelegate에 넣어야한다는 것입니다. 앱 전체에 Admob 배너가 하나만 있어야하며 앱 관리자가 보유해야합니다. 그게 최선입니다. 이 줄 : let bannerView = GADBannerView() <--- 배너를 만듭니다. 여기 있으면 안된다. – GeneCode