我在我的一个视图控制器上有一个广告横幅视图,作为我的游戏的指导页面。当视图控制器被多次加载时,我收到以下错误。
WARNING: More than 10 instances of ADBannerView or ADInterstitialView currently exist. This is a misuse of the iAd API, and ad performance will suffer as a result. This message is printed only once.我已经在stackoverflow上搜索了这个错误,阅读了响应,但没有对我起作用。我已经读到,你的意思是释放广告横幅,然后没有它等,我有,仍然收到这个错误。我的"viewWillAppear“和"viewWillDissapear”的代码如下。任何帮助都将不胜感激!
-(void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
_adBanner = [[ADBannerView alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height, 320, 50)];
_adBanner.delegate = self;
[self.view addSubview:_adBanner];}
-(void) viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
if (_adBanner != nil) {
_adBanner.delegate = nil;
_adBanner.hidden = YES;
[_adBanner release];
_adBanner = nil;
}}
发布于 2014-07-12 14:00:59
在将iAd设置为nil之前,请尝试将其从其superview中删除:
-(void) viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
if (_adBanner != nil) {
[_adBanner removeFromSuperview]; // <-new line
_adBanner.delegate = nil;
_adBanner.hidden = YES;
[_adBanner release];
_adBanner = nil;
}发布于 2014-07-13 19:34:52
以下是我已经在我的应用程序中使用的iAd代码,没有问题:
implementation ViewController
{
ADBannerView *adView;
BOOL bannerIsVisible;
}
- (void)viewDidLoad
{
[super viewDidLoad];
adView = [[ADBannerView alloc] initWithFrame:CGRectZero];
adView.frame = CGRectOffset(adView.frame, 0, -50);
adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
[self.view addSubview:adView];
adView.delegate=self;
bannerIsVisible=NO;
}
- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
if (!bannerIsVisible)
{
[UIView beginAnimations:@"animateAdBannerOn" context:NULL];
// banner is invisible now and moved out of the screen on 50 px
banner.frame = CGRectOffset(banner.frame, 0, 50);
[UIView commitAnimations];
bannerIsVisible = YES;
}
}
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
if (bannerIsVisible)
{
[UIView beginAnimations:@"animateAdBannerOff" context:NULL];
// banner is visible and we move it out of the screen, due to connection issue
banner.frame = CGRectOffset(banner.frame, 0, -50);
[UIView commitAnimations];
bannerIsVisible = NO;
}
}发布于 2014-07-27 13:23:28
不是在单个类中初始化adBannerView,而是在AppDelegate中创建它。
我放了:
@property (strong, nonatomic) ADBannerView *adBanner;在我的AppDelegate.h中:
self.adBanner = [[ADBannerView alloc] init];在我的AppDelegate.m
然后在单个类中,我添加了:
@property (strong, nonatomic) ADBannerView *adBanner;在.h和.m中,我放入:
{
BOOL _bannerIsVisible;
}就在@interface下面,在@implementation中我放了:
#pragma mark Ads
- (WTMAppDelegate *) appdelegate {
return (WTMAppDelegate *)[[UIApplication sharedApplication] delegate];
}
- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
NSLog(@"Retreieved Ad");
[self bringBannerBack];
}
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
NSLog(@"Failed to retrieve ad");
[self moveBannerViewOffScreen];
}
- (void)bringBannerBack
{
[self.adBanner setAlpha:1];
[self.adBanner setNeedsDisplay];
[UIView beginAnimations:@"MoveView" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDuration:0.1];
self.adBanner.frame = CGRectMake(0, self.view.bounds.size.height - 50, 320, 50);
[UIView commitAnimations];
_bannerIsVisible = YES;
[self.adBanner setAlpha:1];
}
//Move the banner off the screen.
- (void)moveBannerViewOffScreen
{
[self.adBanner setAlpha:0];
[self.adBanner setNeedsDisplay];
_bannerIsVisible = NO;
}在viewWillAppear和ViewWillDisappear中:
- (void) viewWillDisappear:(BOOL)animated{
self.adBanner.delegate=nil;
self.adBanner=nil;
[self.adBanner removeFromSuperview];
}
- (void) viewWillAppear:(BOOL)animated
{
self.adBanner = [[self appdelegate] adBanner];
self.adBanner.delegate = self;
[self.view addSubview:self.adBanner];
if (self.adBanner.bannerLoaded == NO){
NSLog(@"NO initial banner loaded");
[self moveBannerViewOffScreen];
} else {
NSLog(@"Initial ad loaded");
[self bringBannerBack];
}
}https://stackoverflow.com/questions/24710106
复制相似问题