2016-09-16 1 views
1

提示します。その後、2つのVCのViewControllerとSecondViewControllerにバナーを表示します。バナーは正しく表示されますが、2つの視覚障害があります。AdMobのGADBannerViewの遅延私はバナービューを設定するには、AppDelegateを使用して、その代表者午前新しいVC

  1. アプリが開かれると、テストバナーが読み込まれるまで約2-3秒の遅延があります。私がIBを使用していた時、バナーがすぐに現れました。

  2. ViewController - > SecondViewControllerからsegue(現在のモーダル/オーバースクリーン/クロスディスマップ/アニメーションなし)を経由すると、バナーが表示されるまで約1〜2秒の遅延があります。

バナーは完全にアップロード、マイナス上記の二つのタイムラグ/遅延の問題。どうすればこれらを解決できますか?

ストーリーボード: StoryboardAppDelegate

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

あなたは良いアイデアですアプリケーション全体、全体で使用する1つGADBannerViewを作成しようとしているように見えます。 appDelegate.adBannerView = GADBannerView():あなたは、あなたのビューコントローラのrequestAds機能で新しいGADBannerViewを作成しているのでかかわらことをやっていません。それを除く。

また、あなたの要求を行うと、アプリのデリゲートに広告ユニットIDを設定し、requestAds機能から削除します。 View Controllerの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

2番目のVCで負荷が大きい/負荷が高い...閉じるボタンをクリックすると、広告はもう存在しません。最初の投稿を作成する前にこれを体験しました。そのため、そこにappDelegate.adBannerView = GADBannerView()がありました。別のものをロードしようとする。第2のVCが解雇されたときにバナーが表示されないという修正はありますか?代わりのviewDidLoadの – Joe

+0

作品viewDidAppear –

+0

内の関数を呼び出します! viewWillAppearを使用するとさらに良い結果が得られます(広告のフリッカーはありません)。ここであなたの助けをありがとう。 – Joe

関連する問題