网络断开后iAd刷新

7
我有一个iAd,在联网时显示正常。在iOS模拟器或测试设备上,如果我打开我的应用程序,看到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 的调用仅出现一次 - 不像我期望的那样每分钟刷新广告。
1个回答

2

1- 是的,就像实时广告一样,有时候会出现没有广告的情况,可能需要数小时时间。我相信刷新周期是3分钟,但苹果可以根据他们的意愿进行更改。 2- 当正确设置后,您不需要这样做,它会自动发生。我有一个带广告的应用程序,当切换网络或使用飞行模式时,它的行为是正确的。

现在,似乎有关于飞行模式的问题,请参考这个线程:iAds Loading Throttled After Re-Launching App From Background (Also Happens In iAdSuite),但我没有最终答案。也许您可以通过将didFail中的NSLog更改为NSLog(@“%@”,error)来探索更多信息,以检查它确切地说了什么。 啊,确实没有办法在应用商店被接受之前测试真正的广告。


感谢您的建议。让我困惑的是,如果我在我的iPhone上使用xCode启动应用程序并连接到互联网,我每60秒就会得到我的日志“AdWin”,正如预期的那样。如果我以同样的方式启动应用程序,但打开了飞行模式,则我的日志中只会出现一次“AdLose”。我本来希望它每60秒都失败。它给出的错误是:Error Domain=ADErrorDomain Code=1 "The operation couldn’t be completed. (ADErrorDomain error 1.)" - Andrew_L
我也卡在那个点上了,我认为关键是你会收到一个ADError,而在我的测试中,我收到了一个NSURL错误,显然NSURL错误已经被很好地处理了。我建议加入这样的逻辑:当错误是ADErrorxxx时,关闭横幅并重新开始(即在viewDidLoad中释放+重新分配)。 - gregory
我将把这个标记为被接受的答案,因为它是最有帮助的。我很满意我的解决方案会起作用,因为我下载了苹果的示例程序“iAdSuite”,并发现在相同的条件下它也出现了同样的错误。谢谢。 - Andrew_L

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接