【发布时间】:2013-01-23 22:53:19
【问题描述】:
我在我的应用中使用 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] 方法并成功显示横幅,除了第一次加载问题。
我想知道是否有人遇到过这个问题,以及如何解决。我对任何可以消除冻结问题的想法持开放态度。我试图将代码运行到后台线程,但我失败了,因为我对它不是很有经验。
非常感谢任何帮助,在此先感谢。
【问题讨论】:
-
您能否详细说明您具体拥有什么样的 UI 以及 GADBannerView 在您的层次结构中的位置? 4-5 秒的延迟听起来很大,你是在做一些复杂的绘图/动画吗?
-
我没有做任何复杂的绘图。实际上所有的应用程序都由 UIViews 和 2-3 个 TableViews 组成。这些表的元素永远不会超过 50 个。我也尝试将 loadRequest: 方法发送到后台线程,但是它不起作用,出现与从后台线程修改主窗口有关的错误。这个函数可能已经是异步的了,因为它是一个标准的 Google 方法并且响应被 Google Banner View 委托捕获。
-
它发生在我身上!你找到解决办法了吗?
-
在 AdMob 6.12.0 的发行说明中说:“在 iOS 8 上,广告加载在主线程上花费的时间更少”。也许使用最新版本的 AdMob 可以解决这个问题。