iAds, показывающие ошибку Ad, были выгружены из этого баннера при переключении между вкладками на UITabBarController

Я впервые внедряю iAds в свое приложение, а само приложение представляет собой простую вкладку с 5 вкладками UITabBarController где первые 4 вкладки являются UIViewController с UITableView встроен и последняя вкладка является UITableViewController,

Следуя этому руководству: http://www.appcoda.com/ios-iad-introduction/ Я успешно внедрил iAds, и он отображается в приложении и работает через каждый метод делегата.

Я сделал так, чтобы первые 4 вкладки имели iAds, а последняя - нет. Это потому, что последняя вкладка является статической UITableView и я не могу встроить это в UIViewControllerи т. д. Итак, первые 4 вкладки имеют adBannerView, AdBannerView добавляется из Storyboard в это UIViewController,

вопрос

Во время разработки на реальном устройстве под управлением iOS 8.1.1 (и на другом устройстве под управлением 8.2), когда я на первой вкладке, он показывает iAd Banner без проблем. Когда я переключаюсь на вторую вкладку и возвращаюсь на первую вкладку, происходят две вещи:

1) adBannerView есть, но само объявление показывается на секунду, а затем снова исчезает. 2) Метод делегата ниже выдает ошибку, как только я покидаю первую вкладку:

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
    NSLog(@"Unable to show ads. Error: %@", [error localizedDescription]);
}
NSLog: Unable to show ads. Error: The operation couldn’t be completed. Ad was unloaded from this banner. 

Несколько вещей, на которые следует обратить внимание. Если я перейду к 5-й вкладке, которая сама по себе не содержит adBannerView и вернитесь на первую вкладку, эта проблема не возникает и adBannerView Само это все еще показывается с рекламой.

Также с использованием NSLogsЯ вижу, что когда я возвращаюсь к первой вкладке со второй вкладки, viewWillAppear запускается, за которым сразу следует:

- (void)bannerViewWillLoadAd:(ADBannerView *)banner


- (void)bannerViewDidLoadAd:(ADBannerView *)banner

Это означает, что объявление готово к загрузке, но на то, чтобы оно действительно отображалось в adBannerView, Когда я возвращаюсь к первой вкладке со второй вкладки, adBannerView есть, но рекламы нет.

Вот некоторый код:

- (void)bannerViewWillLoadAd:(ADBannerView *)banner
{
    NSLog(@"AD Banner will load ad");
}

- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
    NSLog(@"Ad Banner did load ad");

    // We must show the ad banner view when an ad is ready to be displayed.
    [UIView animateWithDuration:0.5 animations:^{
        self.adBanner.alpha = 1.0;
    }];

//    self.adBanner.hidden = NO;

}

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave
{    
    NSLog(@"Ad Banner action is about to begin");

    return YES;
}

- (void)bannerViewActionDidFinish:(ADBannerView *)banner
{
    NSLog(@"Ad Banner action did finish");
}

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
    NSLog(@"Unable to show ads. Error: %@", [error localizedDescription]);

    // When there are no ads to show, we should hide it:

     Hide the ad banner.
    [UIView animateWithDuration:0.5 animations:^{
        self.adBanner.alpha = 0.0;
    }];

}

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.adBanner.delegate = self;
    self.adBanner.alpha = 0.0;

}

Я прочитал руководство Apple ( https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/iAd_Guide/TestingiAdApplications/TestingiAdApplications.html), в котором говорится, что время от времени в приложение будут отправляться ошибки для проверки этого и это нормально, но в этом случае, кажется, что само приложение выгружает представление баннера, но затем занимает много времени, чтобы загрузить его снова.

Кроме того, рассматривая некоторые похожие ситуации с переполнением стека, я даже попытался установить для делегата adBannerView значение nil в viewWillDisappear, Когда я делаю это и переключаюсь с первой вкладки на вторую, я не получаю сообщение об ошибке, говорящее о том, что объявление было выгружено в методе делегата, и когда я возвращаюсь, оно показывает AdBannerView но без рекламы.

- (void)viewWillDisappear:(BOOL)animated
{
    NSLog(@"DISAPEARING");
    self.adBanner.delegate = nil;
}

Таким образом, чтобы подтвердить, проблема в том, что, когда я покидаю первую вкладку, чтобы перейти ко второй вкладке, NSLog выводит сообщение о том, что объявление было выгружено. Когда я возвращаюсь к первой вкладке, она проходит через методы делегата и даже запускает метод, который указывает, что объявление готово к показу, adBannerView видно, но само объявление не, около 2 минут.

Обновить

Я реализовал использование общих баннеров, используя AppDelegate и код в этом примере: https://www.youtube.com/watch?v=_0Mv44FWw0A&feature=youtu.be.

В результате я не получаю никаких ошибок при переключении вкладок, но когда я переключаюсь на вторую вкладку и возвращаюсь снова, она все равно показывает баннер, но загружает в нее рекламу через 2 минуты, даже если bannerViewDidLoadAd Метод делегата вызывается, как только я возвращаюсь на первую вкладку.

Любое руководство по этому вопросу действительно будет оценено.

0 ответов

Другие вопросы по тегам