IAd bannerViewActionDidFinish: не выполнялся после того, как было закрыто подтверждение запуска тестового представления.

Я пытаюсь разместить баннер iad в своем приложении бесплатной версии, баннер работает плавно при нажатии, а просмотр подтверждает, что тестовые объявления работают правильно. Но затем, когда я закрыл это представление, мое приложение было заполнено, я мог нажимать кнопки, но они не выполняли своих действий. Это то, что я делаю, поэтому я думаю, что bannerViewActionDidFinish: не был вызван. В bannerViewActionShouldBegin: я установил buttonTest setEnabled = NO, затем сделал это buttonTest setEnabled = YES в bannerViewActionDidFinish:. В результате кнопка стала отключенной и не включенной, когда тестовый просмотр баннера был закрыт.

.h файл

#import <iAd/iAd.h>

ADBannerView *adView;
BOOL bannerIsVisible;

@property (nonatomic, assign)BOOL bannerIsVisible;

.м файл

@synthesize bannerIsVisible;

- (void)viewDidLoad
{
    adView = [[ADBannerView alloc] initWithFrame:CGRectZero];
    adView.frame = CGRectOffset(adView.frame, 0, -50);
    adView.requiredContentSizeIdentifiers = [NSSet       setWithObject:ADBannerContentSizeIdentifierLandscape];
    adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierLandscape;
    [self.view addSubview:adView];
    adView.delegate=self;
    self.bannerIsVisible=NO;      

    [super viewDidLoad];
}

- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
    if (!self.bannerIsVisible)
    {
        [UIView beginAnimations:@"animateAdBannerOn" context:NULL];
        banner.frame = CGRectOffset(banner.frame, 0, 50);
        [UIView commitAnimations];
        self.bannerIsVisible = YES;
    }
}

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
    if (self.bannerIsVisible)
    {
        [UIView beginAnimations:@"animateAdBannerOff" context:NULL];
        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");

   [buttonTest setEnabled:NO];

   return YES;
}

-(void)bannerViewActionDidFinish:(ADBannerView *)banner
{
   // resume everything you've stopped

   [buttonTest setEnabled:YES];
}

- (void)viewDidUnload
{
    adView.delegate = nil;
}

person Herin    schedule 12.04.2012    source источник


Ответы (1)


в этом случае вы можете проверить аргумент willLeave: bannerViewActionShouldBegin:willLeaveApplication:

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave
{
     NSLog(@"Banner was clicked on; will%sleave application", willLeave ? " " : " not ");

    [buttonTest setEnabled:!willLeave];

    return YES;
}

таким образом, buttonTest остается включенным, если вы не выходите из приложения для перехода по iAd.

person john.k.doe    schedule 24.08.2012