2011-12-02 45 views
7

我有一个连接到网络时显示正常的iAd。在iOS模拟器上或在我的设备上测试,如果我打开我的应用程序,看到iAd,然后进入设置并打开飞行模式,并返回到应用程序,横幅滑出屏幕。大。现在,如果我关闭飞行模式(网络打开),则iAd不会重新出现 - 即使在等待10-15分钟后。网络断开后的iAd刷新

所以,这里是我的问题:

  1. 是否iAd的测试公告会(每分钟左右)刷新本身一样作为一个真正的iAd?

  2. 当检测到网络时,是否有办法强制iAd刷新并请求新广告?

我只是找不到在测试广告的行为信息的任何地方,我不能与真正的广告测试,直到我上传应用程序在App Store(右?)

继承人我的代码:

在其中创建的iAd:

- (void)viewDidLoad 
{ 
    adView = [[ADBannerView alloc] initWithFrame:CGRectMake(0, 410, 320, 50)]; 
    adView.frame = CGRectOffset(adView.frame, 0, 50); 
    adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait]; 
    adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait; 
    [self.view addSubview:adView]; 
    adView.delegate=self; 
    self.bannerIsVisible=NO; 
    [super viewDidLoad]; 
} 

和委托方法:

- (void)bannerViewDidLoadAd:(ADBannerView *)banner 
{ 
    NSLog(@"AdWin"); 
    if (!self.bannerIsVisible) 
    { 
     [UIView beginAnimations:@"animateAdBannerOn" context:NULL]; 
     banner.frame = CGRectOffset(banner.frame, 0, -50); 
     [UIView commitAnimations]; 
     self.bannerIsVisible = YES; 
    } 
} 

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error 
{ 
    NSLog(@"AdLose"); 
    if (self.bannerIsVisible) 
    { 
     [UIView beginAnimations:@"animateAdBannerOff" context:NULL]; 
     banner.frame = CGRectOffset(banner.frame, 0, 50); 
     [UIView commitAnimations]; 
     self.bannerIsVisible = NO; 
    } 
} 

委托方法NSLog调用只出现一次 - 不是每一分钟,就像我期望广告得到刷新一样。

回答

2

1-是和类似的实时广告有一些时候没有广告,它可以是几个小时。我相信刷新周期是3分钟,但它看起来像苹果可以改变它,因为他们将不会需要,当正确设置这会自动发生。我有一个广告应用程序,它切换网络或使用飞机设置时表现正确

现在,似乎有关于飞机设置,请参阅此线程:iAds Loading Throttled After Re-Launching App From Background (Also Happens In iAdSuite),但我没有最终答案。也许你可以通过改变NSLog在didFail ...到NSLog(@“%@”,错误)来检查更多内容,以检查它的确切含义。 啊,事实上没有办法测试真正的广告,直到它被appstore接受。

+0

感谢您的建议。让我感到困惑的是,我在iPhone上使用interent连接启动应用程序(使用xCode),并按预期每60秒获得一次“AdWin”日志。如果我以相同的方式启动应用程序,除了启用飞行模式之后,我只在我的日志中获得“AdLose”一次。我预计它会每60秒失败一次。它给出的错误是:'错误域= ADErrorDomain代码= 1“操作无法完成。(ADErrorDomain错误1。)”' –

+0

我被困在这一点,我相信的关键是你收到一个ADError,在我的测试中,我收到一个NSURL错误,显然NSURL错误处理得很好。我会建议包括一个逻辑,如:当错误是和ADErrorxxx杀死横幅并重新开始它(即释放+ realloc在viewDidLoad)。 – gregory

+0

我打算将其标记为已接受的答案,因为这是最有帮助的。我很满意我的工作,因为我下载了苹果示例程序'iAdSuite',并发现它在相同的条件下给出了相同的错误。谢谢 –