ADBannerView混淆(iOS 8)

时间:2015-06-12 03:57:06

标签: ios objective-c iad adbannerview

我已经搜索,搜索和搜索并搜索了有关如何执行此操作的说明,但我仍然不知道如何正确执行此操作。

我的困境和我想要的结果是什么:

我的故事板中添加了ADBannerView,我实现它的变量名是bannerView。我在游戏中选择停用广告。如果广告被停用,则广告甚至不应加载。如果我更正,则不应该调用代理的bannerViewWillLoadWithAd:方法,也不应该调用bannerViewDidLoadAd:方法。我使用这个代码,包含在" if"声明,从视图控制器中删除ADBannerView

[bannerView removeFromSuperview];
[self setCanDisplayBannerAds:NO];

然后我的委托方法看起来像这样(我的委托是我的游戏场景,视图控制器由所述场景viewController1的属性引用):

-(BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave {
    NSLog(@"banner view action will begin.");
    self.paused = YES;
    return YES;
}

-(void)bannerViewDidLoadAd:(ADBannerView *)banner {
    NSLog(@"Ad loaded.");
}

-(void)bannerViewWillLoadAd:(ADBannerView *)banner {
    NSLog(@"Ad Banner will load ad.");
    if (// ads are disabled) {
        viewController1.canDisplayBannerAds = NO;
        [banner removeFromSuperview]; 
        NSLog(@"Banner shouldn't load");
    }
}

-(void)bannerViewActionDidFinish:(ADBannerView *)banner{
    NSLog(@"Ad Banner action did finish");
    self.paused = NO;
}

-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
    NSLog(@"Ad banner view failed to load. Details about the error: %@", error.debugDescription);
    banner.hidden = YES;
}

代码有效,但我最终在日志中收到错误和奇怪的事情,通常包括"服务会话终止"当广告应该展示和广告加载时,他们不应该。知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

首先,除了创建自己的[self setCanDisplayBannerAds:YES]之外,您还在使用ADBannerView。你需要使用其中一个。除了您正在创建的之外,[self setCanDisplayBannerAds:YES]实际上正在为您创建ADBannerView

要删除广告,您不应等待广告加载以处理隐藏广告。您应该在启动应用程序时检查一次,然后处理它。如果您决定使用setCanDisplayBannerAds非常简单:

-(void)viewDidLoad {
    [super viewDidLoad];
    if (disableAds) {
        self.canDisplayBannerAds = NO;
    }
}

如果您决定使用自己实施的ADBannerView,您的代码可能会更像这样:

-(void)viewDidLoad {
    [super viewDidLoad];
    if (disableAds) {
        banner.hidden = YES;
        banner.delegate = nil;
    }
}