如果没有投放广告,如何隐藏iAd横幅?

时间:2010-06-26 08:36:24

标签: iphone cocoa-touch iad

任何人都可以提供一些帮助吗?我刚刚收到Apple提供的反馈,建议我的应用程序无法被接受,因为它包含的广告在没有广告投放时仍然可见,麻烦的是我无法弄清楚要做些什么来防止这个问题。

[QUOTE]

  

我们已经完成了您的审核   应用;但是,我们不能发帖   这个版本到App Store因为   它显示一个空的iAd横幅   广告内容不可用。该   应隐藏应用内的横幅   每当广告内容不存在时   由iAd提供服务。我们已经包括在内   以下其他详细信息可帮助您   解释这个问题。我们希望你能   考虑修改并重新提交   你的申请。

     

处理广告内容的情况   不可用,你需要   实现横幅视图委托。一个   此处包含示例代码段   为了您的方便。另外,   您可以查看该部分   iAd的“使用横幅视图”   具体的编程指南   细节:   https://developer.apple.com/iphone/prerelease/library/documentation/UserExperience/Conceptual/iAd_Guide/WorkingwithBannerViews/WorkingwithBannerViews.html

     

横幅视图代表删除a   广告时的横幅视图   不可用:

 - (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;
   }
 }

现在我正在努力解决的问题是如何处理该代码,当我尝试将其放入其中时只会抛出几个红色错误,所以我来寻求建议,任何人都可以帮助我在这里?

编辑: 主视图控制器海报要求的代码

    //
//  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 个答案:

答案 0 :(得分:4)

你需要做的是这个事件 - (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError) *)

使用bannerView的视图通过调整其框架大小来覆盖横幅,以覆盖屏幕上的bannerView空间并将bannerView框架的原点移动到屏幕外

乙 然后打开 - (void)bannerViewDidLoadAd:(ADBannerView *)banner

调整视图大小以便为BannerView腾出空间,并将bannerView框架的原点移回屏幕上的空间。

答案 1 :(得分:1)

有一个很好的例子说明如何在WWDC 2010会话视频112中实现这一点。如果您注册了iPhone开发人员计划,可以从iTunes大学下载,如下所述。

假设您参与Apple开发者计划,您收到了一封名为“WWDC for everyone”的电子邮件。按照电子邮件中的链接,直到进入iTunes大学。然后按照框架的链接,选择会话112.我认为实施大约是25分钟。

答案 2 :(得分:0)

您需要完全按照他们的描述进行操作。首先,您需要使MainViewController成为ADBannerView实例的委托。然后,只需将他们提交给您的代码复制并粘贴到MainViewController的实现中即可。这假定您的横幅显示在屏幕底部。如果它出现在顶部,则反转他们提供的代码中的动画方向。

如果您的横幅无法加载广告(直到7月1日该服务上线,甚至在此之后,如果没有连接到网络或库存下降),则会调用此委托方法。此外,您可以响应ADBannerViewDelegate protocol

中描述的其他委托回调

正如他们所建议的那样,iAd Programming Guide的相应部分对此进行了介绍。