2

任何人都可以提供一点帮助吗?我刚刚收到来自 Apple 的反馈,建议我的应用程序无法被接受,因为它包含在没有提供广告时仍然可见的广告横幅,问题是我不知道该怎么做才能防止这个问题。

[引用]

我们已完成对您申请的审核;但是,我们无法将此版本发布到 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;
   }
 }

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

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

    //
//  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
4

3 回答 3

4

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

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

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

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

于 2010-06-26T09:52:45.057 回答
1

在 WWDC 2010 session video 112 中有一个很好的例子来说明如何实现这一点。如果您注册了 iPhone 开发人员计划,您可以从 iTunes University 下载它,如下所述。

假设您参加了 Apple Developer Program,您会收到一封题为“WWDC for everyone”的电子邮件。按照该电子邮件中的链接,直到您到达 iTunes 大学。然后点击框架链接,选择会话 112。我认为实施大约需要 25 分钟。

于 2010-06-27T17:15:28.270 回答
0

你需要完全按照他们的描述去做。首先,您需要让您的 MainViewController 成为您的 ADBannerView 实例的委托。然后,只需将他们交给您的代码复制并粘贴到您的 MainViewController 的实现中。这假设您的横幅出现在屏幕底部。如果它出现在顶部,请在他们提供的代码中反转动画的方向。

如果您的横幅无法加载广告(它将在 7 月 1 日服务上线之前加载,即使在此之后没有连接到网络或库存下降),将调用此委托方法。此外,您可以响应ADBannerViewDelegate 协议中描述的其他委托回调。

正如他们所建议的,这在iAd 编程指南的相应部分中进行了介绍。

于 2010-06-26T13:34:08.747 回答