我在我的 iOS 应用程序中使用 Google Admobs 和广告中介。 似乎存在电池耗尽问题,因为即使应用程序处于后台,谷歌广告也会运行。 当应用程序进入后台时我必须做些什么才能暂停谷歌广告并在应用程序激活时恢复。 预先感谢。
我找到了一个对我来说成功与否的解决方案。希望有人能提供更可靠的解决方案。在 AppDelegate.m 中我有这个...
- (void)applicationDidEnterBackground:(UIApplication *)application {
[self.viewController.bannerView removeFromSuperview];
self.viewController.bannerView.delegate = nil;
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
[self.viewController loadAdBanner];
}
这适用于我的一个应用程序。如果我只是调用removeFromSuperview并且不将bannerView的委托设置为nil,当我查看手机上的电池使用情况(运行iOS 13.5.1)时,我仍然会看到我的应用程序的后台活动。我有另一个应用程序,我在做基本上相同的事情,但无论如何我仍然看到后台活动。在这两种情况下,我都使用 AdMob 7.61.0。
我的bannerView声明如下:
@property(nonatomic, strong) GADBannerView *bannerView;
在 MyViewController.m 中,我有一个 loadAdBanner 函数,看起来像这样......
- (void)loadAdBanner {
...
[self.bannerView setDelegate:self];
self.bannerView.rootViewController = self;
[self.view addSubview:self.bannerView];
GADRequest *request = [GADRequest request];
[self.bannerView loadRequest:request];
...
}
我希望这有帮助。
NotificationCenter.default.addObserver(self, selector: #selector(appDidEnterBackground), name: UIApplication.didEnterBackgroundNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(appWillEnterForeground), name: UIApplication.willEnterForegroundNotification, object: nil)
@objc func appDidEnterBackground() {
adsManager?.pause()
}
@objc func appWillEnterForeground() {
adsManager?.resume()
}
这两个通知会在应用程序进入后台或前台时触发功能