【问题标题】:Google AdMob GADBannerView first request takes long time and freezes UIGoogle AdMob GADBannerView 第一个请求需要很长时间并冻结 UI
【发布时间】: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 可以解决这个问题。

标签: ios admob banner


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-01-15
    • 1970-01-01
    • 2018-11-10
    • 2018-06-10
    • 2014-06-24
    • 1970-01-01
    • 2016-03-18
    • 2020-03-19
    • 1970-01-01
    相关资源
    最近更新 更多