Почему мой баннер iAd не отображается? - PullRequest
0 голосов
/ 05 ноября 2011
- (void)viewDidLoad
{

    adView = [[ADBannerView alloc] initWithFrame:CGRectZero];
    adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
    adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
    CGRect adFrame = adView.frame;
    adFrame.origin.y = self.view.frame.size.height-adView.frame.size.height;
    adView.frame = adFrame;
    [self.view addSubview:adView];

}


- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
    if (!self.bannerIsVisible)
    {
        self.bannerIsVisible = YES;
    }
}

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
    if (self.bannerIsVisible)
    {

        self.bannerIsVisible = NO;
    }

Ответы [ 2 ]

2 голосов
/ 05 ноября 2011

Есть четыре вещи. Во-первых, вы должны размещать баннер вне экрана в вашем методе viewDidLoad, потому что он только покажет пустой кадр при первом запуске и, скорее всего, будет отклонен из-за этого.

Во-вторых, вы неправильно настраиваете отображение баннера. Я думаю, что кадр все еще CGZero. В-третьих, вы не устанавливаете делегата bannerView. Попробуйте следующее:

-(void)viewDidLoad{
    CGRect frame=CGRectZero;
    frame.size = [ADBannerView sizeFromBannerContentSizeIdentifier:ADBannerContentSizeIdentifierPortrait];
    // Place frame at the bottom edge of the screen out of sight
    frame.origin = CGPointMake(0.0, CGRectGetMaxY(self.view.bounds));

    // Now to create and configure the banner view
    ADBannerView *adView = [[ADBannerView alloc] initWithFrame:frame];
    adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
    // Set the delegate to self, so that we are notified of ad responses
    adView.delegate = self;
    [self.view addSubview: adView];
}

В-четвертых, в вашем методе bannerViewDidLoadAd: вы не анимируете рекламный баннер на месте. Попробуйте это:

- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
    // Get a brand new frame
    CGRect newFrame=CGRectZero;
    CGPoint frameOrigin=CGPointZero;
    // Set the origin
    frameOrigin=CGPointMake(0.0, CGRectGetMaxY(self.view.bounds));
    newFrame.origin=frameOrigin;

    // Set the size
    newFrame.size=[ADBannerView sizeFromBannerContentSizeIdentifier:ADBannerContentSizeIdentifierPortrait];

    CGFloat bannerHeight = newFrame.size.height;
    CGFloat bannerOffset=0.0;

    // Determine where the new frame should be
    if (!self.bannerIsVisible)
    {   
        // It should be visible, raise it up
        bannerOffset=-bannerHeight;
    }

    CGRect offSetRect=CGRectOffset(newFrame,0.0f,bannerOffset);
        [UIView animateWithDuration:0.2
                         animations:^{banner.view.frame=offSetRect}
                         completion:^(BOOL finished){
                             if (bannerOffSet<0){
                               self.bannerIsVisible=YES;
                             }else{
                               self.bannerIsVisible=NO;
                             }
                         }
        ]; 

}

Конечно, если баннер должен располагаться в верхней части экрана, вы, вероятно, можете понять, как что-то нужно изменить, но это заставит вас двигаться в правильном направлении.

Удачи

0 голосов
/ 05 ноября 2011

Не уверен, прочитав ваш вопрос, но имейте в виду, что Apple имитирует недоступность iAds. Иногда вам нужно повторить попытку несколько раз, прежде чем показывать образец объявления.

...