2013-12-03 5 views
0

Я следую Apple's best practices for iAd при создании единого рекламного объекта iAd для всего приложения в своем делете приложения - как он говорит, вы должны создать один ADBannerView и поделиться им по всем Просмотры. Я называю следующий метод, чтобы инициализировать его в моем приложении делегата:iAds не отображается на первом экране приложения - объявление не загружено

- (void)initializeAds { 
    // bannerAd is a property of MyAppDelegate 
    bannerAd = [[ADBannerView alloc] initWithFrame:CGRectZero]; 
    bannerAd.delegate = self; 
    bannerAd.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait; 
} 

И тогда в моем UIViewController, я имею в виду

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 
ADBannerView *myBannerView = appDelegate.bannerAd; 

Это прекрасно работает в большинстве моего приложения, работает мой рекламный код отображения для текущего UIViewController в viewDidAppear:. Однако, на первом UIViewController (корневом UIViewController), когда приложение изначально открыто, оно не отображает объявление. Кажется, что он еще не загрузил объявление. Но когда я перехожу к другому UIViewController, а затем возвращаюсь, объявление отображается, по-видимому, потому, что у него была возможность загрузить объявление. Я запускаю свое тестовое устройство со скоростью заполнения 100%. Как я могу заставить iAd попытаться получить объявление до того, как будет запущен мой код?

+0

Возможно, это связано с тем, что Adserver будет выполнять как подключение, так и отсоединение в целях тестирования, не стоит беспокоиться, что он предназначен только для тестирования –

ответ

0

В делегате приложения не забудьте указать делегат приложения в качестве делегата рекламного баннера. Затем реализовать метод -(void)bannerViewDidLoadAd:(ADBannerView *)banner:

-(void)bannerViewDidLoadAd:(ADBannerView *)banner { 
    UIViewController *rootViewController = <get the root view controller>; 
    [rootViewController displayAds]; // this is the code to display the ad 
} 

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

Смежные вопросы