Pet*_*ter 5 objective-c admob ios
在实施 Admob 时,我遇到了一些严重的问题。我遵循了官方文档,但玩游戏一段时间后,手机开始变得非常热,过了一会儿,应用程序突然变得非常缓慢和滞后,最终崩溃。
我 100% 确定这是由于显示了大量 Admob 插页式广告所致。因为应用程序在没有它们的情况下也可以完美运行。
我承认,如果你玩了一段时间,就会显示很多广告,但关闭它们不是一个选择,因为它是应用程序的主要收入来源。
这是我用来加载和显示广告的代码:
- (void)loadInterstitial {
[GADInterstitialAd loadWithAdUnitID:@"ca-app-pub-xxx/xxx" request:[GADRequest request] completionHandler:^(GADInterstitialAd *ad, NSError *error) {
if (error) {
NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
return;
}
self.interstitial.fullScreenContentDelegate = nil;
self.interstitial = ad;
self.interstitial.fullScreenContentDelegate = self;
}];
}
- (void)displayInterstitial {
if (self.interstitial) {
[self.interstitial presentFromRootViewController:self];
adCount = 0;
[[NSUserDefaults standardUserDefaults] setInteger:adCount forKey:@"adCount"];
[[NSUserDefaults standardUserDefaults] synchronize];
} else {
NSLog(@"Ad wasn't ready");
}
}
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
[self loadInterstitial];
}
Run Code Online (Sandbox Code Playgroud)
没什么特别的。对我来说,显示大量插页式广告后内存似乎会超载,有什么方法可以在显示后处理它们吗?
您需要interstitial在新请求之前清除旧请求:
- (void)loadInterstitial {
self.interstitial.fullScreenContentDelegate = nil;
self.interstitial = nil;
[GADInterstitialAd loadWithAdUnitID:@"ca-app-pub-xxx/xxx" request:[GADRequest request] completionHandler:^(GADInterstitialAd *ad, NSError *error) {
if (error) {
NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
return;
}
self.interstitial = ad;
self.interstitial.fullScreenContentDelegate = self;
}];
}
Run Code Online (Sandbox Code Playgroud)