在spritekit场景中隐藏iAd bannerview

时间:2014-05-09 17:35:59

标签: ios objective-c sprite-kit iad

我正在尝试将iads添加到我的新精灵套件游戏中。问题是我不需要广告在所有场景上。我已经开始在mainstoryboard中创建一个ADBannerView。之后,我试图使用NSNotification隐藏和显示不同场景中的广告,但它不起作用。即使我已添加到Menu.m(场景)中,广告仍然显示:

[[NSNotificationCenter defaultCenter] postNotificationName:@"hideAd" object:nil];

ViewController.m

-(void)viewWillLayoutSubviews {

    [super viewWillLayoutSubviews];
    // Configure the view.
    SKView * skView = (SKView *)self.view;
    //skView.showsFPS = YES;
    //skView.showsNodeCount = YES;
    //skView.showsPhysics = YES;


    if (!skView.scene) {


        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:@"hideAd" object:nil];
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:@"showAd" object:nil];



        SKScene * scene = [Menu sceneWithSize:skView.bounds.size];

        NSLog(@"%@", scene);

        // Present the scene.
        [skView presentScene:scene];






    }

}

-(void)bannerViewDidLoadAd:(ADBannerView *)banner {

        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:1];
        [banner setAlpha:1];
        [UIView commitAnimations];


    }

-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:1];
    [banner setAlpha:0];
    [UIView commitAnimations];


}

- (void)handleNotification:(NSNotification *)notification
{
    if ([notification.name isEqualToString:@"hideAd"]) {
        [self hidesBanner];
    }else if ([notification.name isEqualToString:@"showAd"]) {
        [self showsBanner];
    }
}


-(void)hidesBanner {

    NSLog(@"HIDING BANNER");
    [adView setAlpha:0];

}


-(void)showsBanner {

    NSLog(@"SHOWING BANNER");
    [adView setAlpha:1];


}

1 个答案:

答案 0 :(得分:0)

如果您不打算显示iAd,那么创建iAd是不合适的。

根据Apple的Banner View Best Practices

  

•仅在打算将其显示给用户时才创建横幅视图。否则,它可能会循环播放广告并耗尽您应用的可用广告列表。

     

•如果用户从带有横幅视图的内容屏幕导航到没有横幅视图的屏幕,并且您希望它们长时间位于该屏幕上,请从中删除横幅视图查看层次结构,将其委托设置为nil并在转换到新的内容屏幕之前释放它。更一般地说,避免在用户看不见时保持横幅视图。

我记得有一段时间正在阅读hidden财产,但看着iAd Framework Reference,我找不到任何此类财产。如果您不想在特定场景中显示广告,我建议您遵循Apple的指南。