Как скрыть баннеры iAd, когда реклама не показывается? - PullRequest
2 голосов
/ 26 июня 2010

Кто-нибудь может предложить небольшую помощь по этому вопросу?Я только что получил отзыв от Apple, в котором сообщалось, что мое приложение не может быть принято, потому что оно содержит рекламные баннеры, которые все еще были видны, когда не показывали рекламу, но проблема в том, что я не могу понять, что делать, чтобы предотвратить эту проблему.* [QUOTE]

Мы завершили рассмотрение вашей заявки;однако мы не можем опубликовать эту версию в App Store, поскольку она отображает пустой баннер iAd, когда содержание рекламы недоступно.Баннер в приложении должен быть скрыт всякий раз, когда iAd не обслуживает рекламный контент.Мы включили дополнительную информацию ниже, чтобы помочь объяснить проблему.Мы надеемся, что вы рассмотрите вопрос о пересмотре и повторной подаче заявки.

Чтобы справиться со случаем, когда рекламный контент недоступен, вам необходимо реализовать делегат для просмотра баннера.Пример кода приведен здесь для вашего удобства.Кроме того, вы можете просмотреть раздел «Работа с представлениями баннеров» в Руководстве по программированию iAd для получения более подробной информации: https://developer.apple.com/iphone/prerelease/library/documentation/UserExperience/Conceptual/iAd_Guide/WorkingwithBannerViews/WorkingwithBannerViews.html

Делегат с представлением баннера для удаления представления баннера, когда реклама недоступна:

 - (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
 {
  if (self.bannerIsVisible)
   {
       [UIView beginAnimations:@"animateAdBannerOff" context:NULL];
 // assumes the banner view is at the top of the screen.
       banner.frame = CGRectOffset(banner.frame, 0, -50);
       [UIView commitAnimations];
       self.bannerIsVisible = NO;
   }
 }

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

РЕДАКТИРОВАТЬ: Основной viewcontroller Код по запросу автора

    //
//  MainViewController.m
//  GBSoundboard4
//
//  Created by David Clarke on 19/06/2010.
//  Copyright __MyCompanyName__ 2010. All rights reserved.
//

#import "MainViewController.h"
#import <AVFoundation/AVAudioPlayer.h>

@implementation MainViewController
-(IBAction)goodafternoon {
    NSString *path = [[NSBundle mainBundle] pathForResource:@"goodafternoon" ofType:@"wav"];
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    [theAudio play];
}

-(IBAction)jollygood {
    NSString *path = [[NSBundle mainBundle] pathForResource:@"jollygood" ofType:@"wav"];
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    [theAudio play];
}
-(IBAction)playSound {
    NSString *path = [[NSBundle mainBundle] pathForResource:@"goodmorning" ofType:@"wav"];
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];

    [theAudio play];
}

-(IBAction)upgrade {
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://itunes.apple.com/gb/app/the-great-british-soundboard/id376263018?mt=8"]];
}



/*
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
}
*/


- (void)flipsideViewControllerDidFinish:(FlipsideViewController *)controller {

    [self dismissModalViewControllerAnimated:YES];
}


- (IBAction)showInfo:(id)sender {    

    FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideView" bundle:nil];
    controller.delegate = self;

    controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:controller animated:YES];

    [controller release];
}


- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc. that aren't in use.
}


- (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}


/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations.
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/


- (void)dealloc {
    [super dealloc];
}


@end

Ответы [ 3 ]

4 голосов
/ 26 июня 2010

Что вам нужно сделать, так это событие - (void) bannerView: (ADBannerView *) banner didFailToReceiveAdWithError: (NSError *)

Делает ли ваше представление, что с bannerView, закрывает баннер, изменяя его размерфрейм, чтобы закрыть пространство bannerView на вашем экране и переместить начало фрейма bannerView за пределы экрана

B, затем - - (void) bannerViewDidLoadAd: (ADBannerView *) banner

изменить размер вашего представления наосвободите место для BannerView и переместите начало кадра bannerView обратно в пространство на экране.

1 голос
/ 27 июня 2010

Отличный пример того, как реализовать это в сеансовом видео WWDC 2010 112. Если вы зарегистрированы в программе для разработчиков iPhone, вы можете загрузить ее из iTunes University, как описано ниже.В программе Apple Developer Program вы получили электронное письмо под названием «WWDC для всех».Перейдите по ссылкам в этом письме, пока не попадете в iTunes University.Затем перейдите по ссылке для фреймворков и выберите сеанс 112. Я думаю, что реализация находится примерно на 25-минутной отметке.

0 голосов
/ 26 июня 2010

Вы должны делать именно то, что они описывают.Во-первых, вам нужно сделать свой MainViewController делегатом для вашего экземпляра ADBannerView.Затем просто скопируйте и вставьте полученный код в реализацию вашего MainViewController.Это предполагает, что ваш баннер появляется в нижней части экрана.Если оно отображается сверху, поменяйте направление анимации в предоставленном ими коде.

Если на ваш баннер не загружается реклама (что будет происходить до 1 июля, когда сервис будет запущен, и дажепосле этого, если он не подключен к сети или если инвентарь исчезает), будет вызван этот метод делегата.Кроме того, вы можете отвечать на другие обратные вызовы делегатов, описанные в протоколе ADBannerViewDelegate .

. Как предполагается, это описано в соответствующем разделе Руководства по программированию iAd * 1008.*.

...