iAd баннер показывает тестовое объявление на симуляторе, но не на устройстве

Я пытаюсь разместить баннер iAd в своем приложении для iPhone. Вот где я объявляю рекламный баннер:

- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
    [UIView beginAnimations:nil context:nil];

    [UIView setAnimationDuration:1];

    [banner setAlpha:1];

    [UIView commitAnimations];
}

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
    [UIView beginAnimations:nil context:nil];

    [UIView setAnimationDuration:1];

    [banner setAlpha:0];

    [UIView commitAnimations];
}

Когда я тестирую на симуляторе, тестовое объявление появляется сразу. Когда я тестирую на своем устройстве, ничего не появляется.

Я недавно зарегистрировался в системе Apple iAd, но когда я пытаюсь взглянуть на раздел iAd в iTunes Connect, он говорит мне, что сеть iAd в настоящее время недоступна. Поэтому тестовое объявление не будет отображаться на моем устройстве? Если так, почему это все еще появляется на симуляторе?

2 ответа

Это связано с тем, что до показа рекламы ваше устройство должно связаться с iAD на серверах поиска были выбраны десятки (если не сотни) тысяч объявлений, решите, какая из них лучше всего подходит для вашего приложения, отправьте информацию об этом объявлении на ваше устройство ios, а затем отправьте подтверждение обратно на iAD серверы, и ничего из этого не может быть сделано без хорошего интернет-соединения.

Тем не менее, на ios simulatorничего из вышеперечисленного не должно произойти, и симулятор просто отображает тестовое объявление, несмотря ни на что.

У меня есть два приложения в магазине приложений, которые используют точно такой же код, как и вы, и отображают рекламу с задержкой, которую вы описали. Таким образом, в вашем коде нет ошибок, и задержка показа рекламы совершенно нормальная.

Итак, как вы можете видеть, многое должно произойти, прежде чем iAD будет отображаться на реальном устройстве ios, и даже в этом случае у вас должно быть сильное подключение к Интернету.

Я надеюсь, что это может быть полезно для новых пользователей, это работает для меня:

В ViewController.h

  @interface ViewController : UIViewController <ADBannerViewDelegate> {    
  }
  @property (nonatomic, strong) ADBannerView *banner;
  @end

И во ViewController

- (void)viewDidLoad{
  [super viewDidLoad];
  //self.canDisplayBannerAds = YES; This give me a error    
  self.banner = [[ADBannerView alloc] initWithFrame:CGRectZero];
  self.banner.delegate = self;
  [self.banner sizeToFit];
  self.banner.hidden = true;
}

И последнее:

Реализуйте два метода:

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{
if (banner.isBannerLoaded) {
    [UIView beginAnimations:@"animateAdBannerOff" context:NULL];
    // Assumes the banner view is placed at the bottom of the screen.
    banner.frame = CGRectOffset(banner.frame, 0, banner.frame.size.height);
    [UIView commitAnimations];
 }
}

- (void)bannerViewDidLoadAd:(ADBannerView *)banner{
 NSLog(@"Showing iAd");
 self.banner.hidden = false;
 ADBannerView *adView = [[ADBannerView alloc] initWithFrame:CGRectMake(0,    self.view.frame.size.height - 50, 320, 50)];
  //adView.delegate = self;
 [self.view addSubview:adView];
}
Другие вопросы по тегам