呈现新VC时AdMob GADBannerView延迟

时间:2016-09-16 19:49:50

标签: ios swift admob gadbannerview

我正在使用AppDelegate来配置横幅视图及其代理。然后在两个VC上显示横幅:ViewController和SecondViewController。横幅显示正确,但有两个视觉不幸。

  1. 在应用程序打开时,测试横幅加载大约需要2-3秒的延迟。当我使用IB时,横幅立即出现。

  2. 从ViewController转换时 - > SecondViewController通过segue(当前模态/全屏/交叉解析/无动画),在横幅显示之前有大约1-2秒的延迟。

  3. 横幅加载完美,减去上面的两个延迟/延迟问题。我该如何解决这些问题?

    故事板: 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 个答案:

答案 0 :(得分:1)

您似乎正在尝试创建一个GADBannerView以在整个应用程序中使用,这是一个好主意。您之所以没有这样做,是因为您在视图控制器的GADBannerView功能requestAds中创建了新的appDelegate.adBannerView = GADBannerView()requestAds。删除它。

此外,请执行您的请求并在您的应用委托中设置广告单元ID,并将其从viewDidLoad功能中删除。在您的View Controller 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) } 属性。如果你想要一个函数,它最终会类似于:

public abstract class Myglobal 
{
    private int Type =0;

    public void setType(int type) {
        this.Type = type;
    }

    public int getType() {
        return this.Type;
    }
}

public class A extends Myglobal 
{
    public class A ()
    {
        this.setType(1);
    }
}