2016-09-16 7 views
1

Я использую AppDelegate для настройки представления баннера и его делегатов. Затем отобразите баннер на двух VC: ViewController и SecondViewController. Баннеры отображаются правильно, но с двумя визуальными неудачами.AdMob GADBannerView задержка при представлении нового VC

  1. На открытии приложения на тестовом баннере имеется 2-3-секундная задержка. Когда я использовал IB, баннеры появились мгновенно.

  2. При переходе с ViewController -> SecondViewController через segue (присутствует в режиме реального времени/полноэкранный режим/Cross Disolve/No Animation) задержка составляет около 1-2 секунд, пока не появится баннер.

знамена загрузить отлично, минус вопросы на две задержки/задержки выше. Как я могу их решить?

Раскадровка: Storyboard AppDelegate

class AppDelegate: UIResponder, UIApplicationDelegate, GADBannerViewDelegate { 

var window: UIWindow? 
var adBannerView = GADBannerView() 
let myBannerRequest = GADRequest() 

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

    myBannerRequest.testDevices = [kGADSimulatorID] 
    adBannerView.delegate = self 
    adBannerView.isHidden = true 

    return true 
} 

func adViewDidReceiveAd(_ bannerView: GADBannerView!) { 
    adBannerView.isHidden = false 
} 
func adView(_ bannerView: GADBannerView!, didFailToReceiveAdWithError error: GADRequestError!) { 
    adBannerView.isHidden = true 
} 
} 

ViewController

let appDelegate = UIApplication.shared.delegate as! AppDelegate 

override func viewDidLoad() { 
    super.viewDidLoad() 
    requestAds() 
} 

internal func requestAds() { 
    appDelegate.adBannerView = GADBannerView() 
    appDelegate.adBannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716" 
    appDelegate.adBannerView.adSize = kGADAdSizeBanner 
    appDelegate.adBannerView.rootViewController = self 
    appDelegate.adBannerView.load(appDelegate.myBannerRequest) 
    appDelegate.adBannerView.center = CGPoint(x: view.frame.midX, y: view.frame.height - appDelegate.adBannerView.frame.height/2) 
    view.addSubview(appDelegate.adBannerView) 
} 

SecondViewController

// Same as ViewController, with addition of IBAction for the button: 
@IBAction func closeButtonPressed(_ sender: UIButton) { 
    self.dismiss(animated: true, completion: nil) 
} 

ответ

1

Похоже, вы пытаетесь создать один GADBannerView использовать во всей заявке, которая является хорошей идеей. Вы этого не делаете, потому что вы создаете новый GADBannerView в функции requestAds контроллера View View: appDelegate.adBannerView = GADBannerView(). Убери это.

Кроме того, сделайте свой запрос и установите свой идентификатор рекламного блока в своем делете делегата и удалите его из функции requestAds. В вашем контроллере View View viewDidLoad вы должны только позиционировать свой GADBannerView и добавить его в представление.

Я предполагаю, что вы хотите, чтобы баннер заполнил ширину экрана, поэтому я изменил свойство frame. Если вы хотите получить эту функцию, это будет выглядеть так:

func addBannerToView() { 
    appDelegate.adBannerView.adSize = kGADAdSizeBanner 
    appDelegate.adBannerView.rootViewController = self 
    appDelegate.adBannerView.frame = CGRect(x: 0.0, 
          y: view.frame.height - appDelegate.adBannerView.frame.height, 
          width: view.frame.width, 
          height: appDelegate.adBannerView.frame.height) 
    view.addSubview(appDelegate.adBannerView) 
} 
+0

Загружается отлично/Загружается на Second VC отлично ... При нажатии кнопки закрытия объявления больше нет. Я испытал это, прежде чем я сделал свой первый пост, поэтому у меня был appDelegate.adBannerView = GADBannerView(). Попробовать загрузить другой. Есть ли исправление для баннеров, которые не отображаются, когда второй VC уволен? – Joe

+0

Вместо viewDidLoad вызов функции в viewDidAppear –

+0

Это работает! Получил еще лучший результат (без мерцания объявления), используя viewWillAppear. Спасибо за вашу помощь здесь. – Joe

 Смежные вопросы

  • Нет связанных вопросов^_^