Ios Google AdMob GadbanerView第一个请求需要很长时间并冻结用户界面

Ios Google AdMob GadbanerView第一个请求需要很长时间并冻结用户界面,ios,admob,banner,Ios,Admob,Banner,我正在我的应用程序中使用Google AdMob SDK(最近下载的最新版本) 当我的应用程序启动时,它会冻结4-5秒,直到加载并显示广告。之后运行平稳。当我注释掉横幅请求行时,应用程序正常启动 我已经创建了一个自定义帮助器类,其中包含以下代码 - (void) getGoogleBanner:(UIViewController *) targetController { self.googleBannerView.rootViewController = targetControlle

我正在我的应用程序中使用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是我要将横幅添加到的控制器
  • 我在各种不同控制器的ViewDidDisplay中调用[CustomClass getGoogleBanner:self]方法,并成功地显示横幅,除了第一个加载问题
我想知道是否有人遇到过这个问题,以及它是如何解决的。我愿意接受任何可以消除冻结问题的想法。我尝试将代码运行到后台线程,但失败了,因为我对它不是很有经验


非常感谢您的帮助,提前感谢。

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


据我所知,在调用
loadRequest
方法时,框架还将调用
canOpenURL:
方法(
UIApplication
)。但是,从我运行的一些测试(在5.1.1和6.1.3版本的模拟器和iOS设备上),
canOpenURL
偶尔会在模拟器上冻结几秒钟(返回时需要20秒),在设备上运行良好。

您能否详细说明您的UI类型以及GadbanerView在您的层次结构中的位置?4-5秒的延迟听起来相当大,你在做一些复杂的绘图/动画吗?我没有做任何复杂的绘图。实际上,所有的应用程序都由UIView和2-3个TableView组成。表中的元素从不超过50个。我还尝试过将loadRequest:方法发送到后台线程,但是它不起作用,错误与从后台线程修改主窗口有关。这个函数可能已经是异步的,因为它是一个标准的Google方法,并且响应被Google Banner视图代理捕获。我也遇到了同样的情况!您找到解决方案了吗?在AdMob 6.12.0的发行说明中,它说:“在iOS 8上加载广告在主线程上花费的时间更少”。也许通过AdMob的最新版本,可以解决这个问题。