0
votes

I am trying to create 2 iAds but I have only one on simulator. I can not now check it with device. Why I have only one? I have only second iAd

My code is:

adView1 = [[ADBannerView alloc] initWithAdType:ADAdTypeBanner]; 
adView1.frame = CGRectOffset(adView1.frame, 0, 50);
adView1.delegate = self;
[self.backgroundView addSubview:adView1];

adView2 = [[ADBannerView alloc] initWithAdType:ADAdTypeBanner];
adView2.frame = CGRectOffset(adView2.frame, 0, 200);
adView2.delegate = self;
[self.backgroundView addSubview:adView2];


- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
if (!self.bannerIsVisible)

{
    [UIView beginAnimations:@"animateAdBannerOn" context:NULL];
    // banner is invisible now and moved out of the screen on 50 px
            if (banner == adView1)
    {
        banner.frame = CGRectOffset(banner.frame, 0, 50);
    }
    if (banner == adView2)
    {
        banner.frame = CGRectOffset(banner.frame, 0, 200);
    }
    [UIView commitAnimations];
    self.bannerIsVisible = YES;
}
}
  • (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error { if (self.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]; self.bannerIsVisible = NO; } }

    • (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave { NSLog(@"Banner view is beginning an ad action"); BOOL shouldExecuteAction = YES; if (!willLeave && shouldExecuteAction) { [audio pause]; } return shouldExecuteAction; }
    • (void)bannerViewActionDidFinish:(ADBannerView *)banner { [audio resume]; }
2

2 Answers

1
votes
adView1.frame = CGRectOffset(adView2.frame, 0, 50);

It must be CGRectOffset(adView1.frame, 0, 50); since adView2 is allocation in the next line only???

0
votes

When you are creating first view, you are using second view's frame:

adView1 = [[ADBannerView alloc] initWithAdType:ADAdTypeBanner]; 
adView1.frame = CGRectOffset(adView2.frame, 0, 50);
adView1.delegate = self;
[self.backgroundView addSubview:adView1];

As adView2 is not created yet - it is nil and frame is (0,0,0,0) You have to use adView1 frame for offset as you do for second view.

Also, keep in mind that displaying 2 banners is going against Apple guideline and not recommend. Take a look here (Best practices section) https://developer.apple.com/library/ios/documentation/userexperience/conceptual/iAd_Guide/WorkingwithBannerViews/WorkingwithBannerViews.html