谷歌AdMob GADBannerView第一个请求需要很长时间并冻结UI

Mur*_*gat 7 banner admob ios

我在我的应用中使用了Google AdMob SDK(最近刚下载的最新版本).

当我的应用启动时,它会冻结4-5秒,直到加载并显示广告.之后它运行顺利.当我注释掉横幅请求行时,应用程序正常启动.

我已经制作了一个自定义助手类,其中我有以下代码.

- (void) getGoogleBanner:(UIViewController *) targetController
{
    self.googleBannerView.rootViewController = targetController;
    [self.googleBannerView.rootViewController.view addSubview:self.googleBannerView];
    [self.googleBannerView setDelegate:self];
    GADRequest* request = [GADRequest request];
    [self.googleBannerView loadRequest:request];
}
Run Code Online (Sandbox Code Playgroud)

哪里

  • googleBannerView是我的类的属性,并且具有GADBannerView类型
  • 我事先正确设置了框架尺寸和广告单元ID
  • targetController是我想要添加横幅的控制器
  • 我在各种不同控制器的viewDidAppear中调用[CustomClass getGoogleBanner:self]方法并成功显示横幅,但首次加载问题除外.

我想知道是否有人遇到过这个问题,以及它是如何解决的.我愿意接受任何可以消除冻结问题的想法.我试图将代码运行到后台线程,但我失败了因为我对它不是很有经验.

非常感谢任何帮助,提前谢谢.

ale*_*x-i 2

我仅在模拟器中运行时遇到此问题,因此如果是这种情况,您可能不必担心。

据我所知,当调用该loadRequest方法时,框架也会调用canOpenURL:方法( UIApplication)。根据我运行的一些测试(在模拟器以及具有 5.1.1 和 6.1.3 的 iOS 设备上),canOpenURL模拟器上偶尔会冻结几秒钟(一旦需要 20 秒才能返回),但是在设备上运行良好。