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

时间:2013-01-23 22:53:19

标签: ios admob banner

我正在使用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];
}

其中

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

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

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

1 个答案:

答案 0 :(得分:2)

我只有在模拟器中运行时才遇到问题,所以如果是这种情况,你不应该担心。

根据我的发现,在调用loadRequest方法时,框架也会调用canOpenURL:方法(UIApplication)。从我运行的一些测试(在模拟器和iOS设备上使用5.1.1和6.1.3),canOpenURL偶尔在模拟器上冻结几秒钟(一旦它花了20秒返回),然而,工作在设备上很好。